📄 706d11604532001d139f992bfca89756
字号:
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.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 )
{
// String js = "<Script>alert('对不起,该数据已经被使用,请确认后再删除!');location.href='/index.jsp';</Script>";
// response.getWriter().print(js);
HttpSession session = ((HttpServletRequest) request).getSession();
session.setAttribute("wrong","错误信息");
request.setAttribute("wrong", "该数据已经被使用,请确认后再删除!");
System.out.print(request.getAttribute("wrong"));
System.out.print("++++++++++++++++++++++");
// return;
}
catch(GenericJDBCException e )
{
System.out.print("HibernateFilter 发生异常现象!");
}
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 + -