我是靠谱客的博主 聪慧冰棍,最近开发中收集的这篇文章主要介绍当点击某个链接发送多个请求之后,浏览器显示正在等待localhost响应怎么办(实用),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近写ssh项目分页的时候,遇到了这样一个问题,当我点击下一页超过10次之后,在浏览器的左下角就会显示“正在等待localhost响应”,只有重新启动Tomcat之后才可以使用,上网查资料都说是没有关闭session的原因,其实关闭了之后,请求多次(30次左右)也会炸掉的。如果不正当关闭session同样也会炸掉。

我就是不正当关闭session而炸掉的:基本代码如下

1.BaseDao 部分代码:

package com.gxuwz.check.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class BaseDao<T> {
private SessionFactory sessionFactory;
private HibernateTemplate hibernateTemplate;
private Session session;
public SessionFactory getSessionFactory() {
return this.sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
this.session = sessionFactory.openSession();
return this.session;
}
}

2.Dao的实现层CheckDaoImpl 部分代码:

public class CheckDaoImpl extends BaseDao implements ICheckDao {
public List<SysCourse> queryCourse(String userid) {
String hql = "from SysCourse a where a.userId = '"+userid+"' order by a.id";
Query query = getSession().createQuery(hql);
List list = query.list();
getSession().close();
return list;
}
}

在这里我们看一下看一下第4行代码,有一个getSession(),这个方法是从BaseDao 里面调用过来的,即在这个地方开启了一个session,而并没有关闭,因为这个方法里面只是openSession,而并没有其他操作。

在第6行,这次的getSession()并不是上面的那个session,而是又重新开启了一个session,经过.close()方法之后关闭了

所以每次调用这个方法的时候都会少关闭一个session,所以调用多次之后就会炸掉。

所以,我将代码改为:

public class CheckDaoImpl extends BaseDao implements ICheckDao {
public List<SysCourse> queryCourse(String userid) {
String hql = "from SysCourse a where a.userId = '"+userid+"' order by a.id";
Session session = getSession();
Query query = session.createQuery(hql);
List list = query.list();
session.close();
return list;
}
}

这样的话,只开启一次session,然后最后一次性关闭
重新启动Tomcat之后,测试30次左右的时候,还是炸掉了
左思右想,是不是要清除缓存才行,所以添加了这个方法clear(),代码如下:

public class CheckDaoImpl extends BaseDao implements ICheckDao {
public List<SysCourse> queryCourse(String userid) {
String hql = "from SysCourse a where a.userId = '"+userid+"' order by a.id";
Session session = getSession();
session.close();
Query query = session.createQuery(hql);
List list = query.list();
session.close();
return list;
}
}

测试,请求不知道多少次,至少有100次了,非常实用,系统没有炸,如果你想详细了解session.clear()方法,请看地址:

https://blog.csdn.net/qq_43290288/article/details/103375039

最后

以上就是聪慧冰棍为你收集整理的当点击某个链接发送多个请求之后,浏览器显示正在等待localhost响应怎么办(实用)的全部内容,希望文章能够帮你解决当点击某个链接发送多个请求之后,浏览器显示正在等待localhost响应怎么办(实用)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部