⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernatefilter.java

📁 留言版系统:这是在Eclipse环境下开发的
💻 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 + -