由于Spring 的AOP面向切面编程,与Servlet容器没有任何关联,所以想要获得Session会话比较麻烦。
当然Struts2同样不依赖Servlet容器,可以在Spring AOP中可以使用com.opensymphony.xwork2.ActionContext,就可以获得Session。
但是在Servlet中或struts1中,可以通过ThreadLocal方式将session保存,Spring AOP中获得Session对象。
具体思路和代码:
 
这个是保存request和session的类
/**
 * 
 * @author 株洲健坤北大青鸟 周钢
 *
 */
public class SysContent {  
     private static ThreadLocal<HttpServletRequest> requestLocal= new ThreadLocal<HttpServletRequest>();  
     private static ThreadLocal<HttpServletResponse> responseLocal= new ThreadLocal<HttpServletResponse>();  
       
    public static HttpServletRequest getRequest() {  
        return (HttpServletRequest)requestLocal.get();  
    }  
    public static void setRequest(HttpServletRequest request) {  
        requestLocal.set(request);  
    }  
    public static HttpServletResponse getResponse() {  
        return (HttpServletResponse)responseLocal.get();  
    }  
    public static void setResponse(HttpServletResponse response) {  
        responseLocal.set(response);  
    }  
    public static HttpSession getSession() {  
        return (HttpSession)((HttpServletRequest)requestLocal.get()).getSession();  
    }  
}
 
 
这个是配置的过滤器
 
/**
 * 
 * @author 株洲健坤北大青鸟 周钢
 *
 */
public class GetContent implements Filter {  
    @Override  
    public void destroy() {  
        // TODO Auto-generated method stub  
    }  
    @Override  
    public void doFilter(ServletRequest arg0, ServletResponse arg1,  
            FilterChain arg2) throws IOException, ServletException {  
        SysContent.setRequest((HttpServletRequest) arg0);  
        SysContent.setResponse((HttpServletResponse) arg1);  
        arg2.doFilter(arg0, arg1);  
    }  
    @Override  
    public void init(FilterConfig arg0) throws ServletException {  
        // TODO Auto-generated method stub  
    }  
}  
 
 
 
使用AOP进行环绕通知切入所有com.aptech.service包下的所有类的方法
 
/**
 * @author 株洲健坤北大青鸟 周钢
 */
@Aspect
public Class AopTest{
@Around(value="execution(* com.aptech.service.*.*(..))")
public void aroundTest(ProceedingJoinPoint pj) throws Exception {  
          HttpServletRequest request = SysContent.getRequest();  
          HttpServletResponse response = SysContent.getResponse();  
          HttpSession session = SysContent.getSession();  
          //其他操作
          if(true){
           pj.proceed();
          }
          throw new Exception("您没有该权限");
    } 
}

最新文章

  1. C#设计模式之装饰者
  2. IOS UIView 02- 深入理解 Scroll Views
  3. JavaScript 面向对象程序设计(下)&mdash;&mdash;继承与多态 【转】
  4. 在caffe中使用hdf5的数据
  5. JavaScript初学者应注意的七个细节(转)
  6. OpenGL中两种计算投影矩阵的函数
  7. SQLServer如何快速生成100万条不重复的随机8位数字
  8. jquery的一些用法
  9. Light OJ 1037 - Agent 47(预处理状态压缩DP)
  10. 优秀的开发者 vs. 差的开发者
  11. 七.生成n位随机字符串
  12. AOJ 2249 Road Construction(Dijkstra+优先队列)
  13. Centos7/RHEL7 开启kdump
  14. 转载:Java Lock机制解读
  15. 转:Jmeter分布式测试
  16. audiounit错误码对应值查询
  17. STS启动时卡在loading加载 dashboard.ui
  18. MySQL优化(1)--------常用的优化步骤
  19. 终于知道linux firefox不能播放 web在线词典的单词发音了! --通过banshee安装gstreamer1-libav/-plugins-ugly/plugins-bad三个mp3插件.
  20. iOS 里RGB 配色 UIColor colorWithRed

热门文章

  1. IDA resources - Script, Plugin, Project, Book, Tutorial
  2. [SQL基础]入门
  3. 在安卓上,微信公众号无法分享到QQ的解决办法之一
  4. 终于理解了什么是LGPL
  5. Maven:Maven 入门
  6. (原)将Oracle迁移到SQLServer
  7. 5)Linux程序设计入门--信号处理
  8. HTML:基本的标签
  9. 基于restful注解(spring4.0.2整合flex+blazeds+spring-mvc)&lt;一&gt;
  10. 给出a的定义 -- 指针 和 数组