📄 hibernatefilter.java
字号:
package cn.hxex.message.util;
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.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class HibernateFilter implements Filter
{
private static Log log = LogFactory.getLog(HibernateFilter.class);
public void init(FilterConfig filterConfig) throws ServletException {
log.info("Servlet filter init, now opening/closing a Session for each request.");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
// There is actually no explicit "opening" of a Session, the
// first call to HibernateUtil.beginTransaction() in control
// logic (e.g. use case controller/event handler, or even a
// DAO factory) will get a fresh Session.
try
{
HibernateUtil.beginTransaction();
request.setCharacterEncoding( "gb2312" );
chain.doFilter(request, response);
// Commit any pending database transaction.
HibernateUtil.commitTransaction();
}
catch (ServletException ex)
{
log.debug("Rolling back the database transaction.");
HibernateUtil.rollbackTransaction(); // Also closes the Session
// Just rollback and let others handle the exception, e.g. for display
throw ex;
}
catch (IOException ex)
{
log.debug("Rolling back the database transaction.");
HibernateUtil.rollbackTransaction(); // Also closes the Session
// Just rollback and let others handle the exception, e.g. for display
throw ex;
}
finally
{
// No matter what happens, close the Session.
HibernateUtil.closeSession();
}
}
public void destroy() {}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -