一个filter 必须实现javax.servlet.Filter 接口,即实现下面的三个方法: 1: doFilter(ServletRequest, ServletResponse, FilterChain):这是一个完成过滤行为的方法。这同样是上游过滤器调用的方法。引入的 FilterChain 对象提供了后续过滤器所要调用的信息。
//这里去用你的Hibernate Session,但不要关闭掉它。2: init(FilterConfig):这是一个容器所调用的初始化方法。它保证了在第一次 doFilter() 调用前由容器调用。您能获取在 web.xml 文件中指定的初始化参数。
//这里初始化你的Hibernat Session3: destroy():容器在破坏过滤器实例前,doFilter()中的所有活动都被该实例终止后,调用该方法。
//这里去关闭掉Hiberanate Session如果在Web应用中,应该放在ServletFilter里面同一closeSession的。如果在页面里面就closeSession,那么肯定就没有发挥ThreadLocal的效果。 我现在写的程序不是Web程序,我也在程序里面不关闭Session的,而是最后统一关闭。 例如: java代码: public static boolean updateUser(User user) {
try {
Session s = ReportSession.currentSession();
ReportSession.currentTransaction();
s.update(user);
s.flush();
return true;
} catch (HibernateException e) {
System.out.println(e.getMessage());
return false;
}
}
//这里去用你的Hibernate Session,但不要关闭掉它。2: init(FilterConfig):这是一个容器所调用的初始化方法。它保证了在第一次 doFilter() 调用前由容器调用。您能获取在 web.xml 文件中指定的初始化参数。
//这里初始化你的Hibernat Session3: destroy():容器在破坏过滤器实例前,doFilter()中的所有活动都被该实例终止后,调用该方法。
//这里去关闭掉Hiberanate Session如果在Web应用中,应该放在ServletFilter里面同一closeSession的。如果在页面里面就closeSession,那么肯定就没有发挥ThreadLocal的效果。 我现在写的程序不是Web程序,我也在程序里面不关闭Session的,而是最后统一关闭。 例如: java代码: public static boolean updateUser(User user) {
try {
Session s = ReportSession.currentSession();
ReportSession.currentTransaction();
s.update(user);
s.flush();
return true;
} catch (HibernateException e) {
System.out.println(e.getMessage());
return false;
}
}
解决方案 »
- 关于hibernate和ibatis的问题,请大家解疑
- 散分了
- ssh中 select 操作加事务有用吗?
- Spring hibernate mysql 存储图片的配置过程及问题
- 请问下首页需要包含多个action请求的数据,要怎么弄?
- 菜鸟求帮助
- 关于XML输出转HTML的问题
- 关于struts的properties(ApplicationResources.properties)文件和log4j的properties(这个文件可以自己命名)文件
- 急等答案!
- 在学习spring security时,启动服务器报错
- java有没有类似javascript的eval功能的函数?
- Struts的JSP中,可否有多个Submit按钮?
但是楼主的 currentSession()好像有点儿问题。
改一下:
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if(session==null){
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}