hibernate的OpenSessionInView
package cn.itcast.tool.hibernate.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.hibernate.Session; import org.hibernate.Transaction; import cn.itcast.tool.hibernate.util.HibernateUtil; public class OpenSessionInViewFilter implements Filter{ public void destroy() { } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { /* * 请求开始打开事务,请求完成提交事务,请求异常回滚事务,一个session对应一个请求 */ Session session=null; Transaction tx=null; try{ session=HibernateUtil.getSession(); boolean flag=session.isOpen(); System.out.println(flag); tx=session.beginTransaction(); arg2.doFilter(arg0, arg1); tx.commit(); }catch(Exception e){ if(tx!=null) tx.rollback(); throw new RuntimeException(e.getMessage(),e); }finally{ if(session!=null) HibernateUtil.closeCurrentSession(); } } public void init(FilterConfig arg0) throws ServletException { } }