📄 hibernatefilter.java
字号:
package com.qrsx.qrsxcrm.web;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.ObjectDeletedException;
import org.hibernate.exception.ConstraintViolationException;
import org.hibernate.exception.GenericJDBCException;
import com.qrsx.qrsxcrm.dao.HibernateUtil;
/**
* 用于进行Hibernate事务处理的Servlet过滤器
*
* @author galaxy
*/
@SuppressWarnings("serial")
public class HibernateFilter implements Filter {
private static Log log = LogFactory.getLog(HibernateFilter.class);
/**
* 过滤器的主要方法 用于实现Hibernate事务的开始和提交
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
// 开始一个新的事务
log.debug("Starting a database transaction");
//HibernateUtil.getSession().beginTransaction();
HibernateUtil.getSession().beginTransaction();
chain.doFilter(request, response);
// 提交事务
HibernateUtil.getSession().getTransaction().commit();
//tx.commit();
}
catch( ConstraintViolationException e )
{
e.printStackTrace();
HttpSession session = ((HttpServletRequest) request).getSession();
session.setAttribute("wrong","错误信息");
System.out.print(session.getAttribute("wrong"));
System.out.print("++++++++++++++++++++++");
// return;
}
catch(ObjectDeletedException e3)
{
// HttpSession session = ((HttpServletRequest) request).getSession();
// session.setAttribute("wrong","错误信息");
//
// System.out.print(session.getAttribute("wrong"));
// System.out.print("++++++++++++++++++++++");
e3.printStackTrace();
System.out.print("HibernateFilter 发生异常现象!");
HttpSession session = ((HttpServletRequest) request).getSession();
session.invalidate();
String js = "<Script>alert('对不起,操作有误,请重新启动服务器!');location.href='/qrsxcrm/logon.jsp';</Script>";
response.getWriter().print(js);
}
//
// catch(GenericJDBCException e )
// {
// System.out.print("HibernateFilter 发生异常现象!");
// HttpSession session = ((HttpServletRequest) request).getSession();
// session.invalidate();
// String js = "<Script>alert('对不起,操作有误,请重新登录!');location.href='/qrsxcrm/logon.jsp';</Script>";
// response.getWriter().print(js);
// }
catch (Throwable ex) {
ex.printStackTrace();
try {
HibernateUtil.getSession().getTransaction().rollback();
//tx.rollback();
} catch (Throwable rbEx) {
log.error("Could not rollback transaction after exception!",
rbEx);
}
// 抛出异常
throw new ServletException(ex);
}
}
/**
* Servlet过滤器的初始化方法 可以读取配置文件中设置的配置参数
*/
public void init(FilterConfig filterConfig) throws ServletException {
}
/**
* Servlet的销毁方法 用于释放过滤器所申请的资源
*/
public void destroy() {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -