| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:一次请求在同一个事务实现
只看楼主 加入收藏
shitainong
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2012-7-6
结帖率:0
收藏
 问题点数:0 回复次数:1 
一次请求在同一个事务实现
HiberSessionFilter过滤器代码:


[java] view plaincopyprint?
package www.csdn.dbshop.filter;  
  
import    
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 org.hibernate.Transaction;   
import www.csdn.dbshop.util.HiberSessionFactory;   
public class HiberSessionFilter implements Filter {   
    public void destroy() {   
    }  
  
    public void doFilter(ServletRequest request, ServletResponse response,              FilterChain chain) throws IOException, ServletException {   
        HttpServletRequest req = (HttpServletRequest) request;  
        // 获取当前请求的URI路径,例如/shoping/csdn/MemberAction_query.action           String requesturi = req.getRequestURI();  
        // 截取字符串,获取‘_’之后的字符串           String str = requesturi.substring(requesturi.indexOf("_") + 1);          // 截取 _名字 如过以 add ,update ,delete 开始 就添加事务处理,把有过事务的处理 都删除           // 根据获取‘_’之后的字符串,截取‘.’之前的字符串,即:就是URI中_到.之间的字符串,即:Action中的方法名           String uri = str.substring(0, str.indexOf("."));          // 判断截取的字符,如果是CUD则进行开启事务的操作,反之,不用开启事务           if ("addObject".equals(uri) || "updateObject".equals(uri)                  || "deleteObject".equals(uri) || "reg".equals(uri)                  || "register".equals(uri) || "buy".equals(uri)) {   
            Transaction ts = null;              try {                  ts = HiberSessionFactory.getSession().beginTransaction();  
                chain.doFilter(request, response);  
                ();  
            } catch (Exception e) {                  if (ts != null) {                      ts.rollback();  
                }  
                throw new RuntimeException(e);              } finally {                  // www.关闭session                   HiberSessionFactory.closeSession();  
            }  
        } else {              try {                  chain.doFilter(request, response);  
            } catch (Exception e) {                  throw new RuntimeException(e);              } finally {                  // 关闭session                   HiberSessionFactory.closeSession();  
            }  
        }  
    }  
  
    public void init(FilterConfig filterConfig) throws ServletException {          // TODO Auto-generated method stub     
    }  
  
}  
web.xml代码:


[html] view plaincopyprint?
<!-- sessionclose过滤器 -->  
  <filter>     <filter-name>HiberSessionFilter</filter-name>     <filter-class>www.csdn.dbshop.filter.HiberSessionFilter</filter-class>   </filter>     
 <filter-mapping>     <filter-name>HiberSessionFilter</filter-name>     <url-pattern>*.action</url-pattern>   </filter-mapping>   注意:在Struts2中,过滤器最好放在Struts2过滤器之前。


成都计算机培训之java培训、成都php培训找最专业的成都IT培训机构成都达内。!成都java培训官网:http://www.
搜索更多相关主题的帖子: 过滤器 package public import 
2013-04-24 16:21
xiao84699024
Rank: 2
来 自:江西南昌
等 级:论坛游民
帖 子:25
专家分:39
注 册:2013-3-31
收藏
得分:0 
不懂,刚学Java

天空的高度是鸟儿飞出来的,水无论有多深是鱼儿游出来的。
2013-04-24 22:24
快速回复:一次请求在同一个事务实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048151 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved