使用spring AOP获得session的思路
2024-08-23 03:35:01
由于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("您没有该权限");
}
}
最新文章
- C#设计模式之装饰者
- IOS UIView 02- 深入理解 Scroll Views
- JavaScript 面向对象程序设计(下)&mdash;&mdash;继承与多态 【转】
- 在caffe中使用hdf5的数据
- JavaScript初学者应注意的七个细节(转)
- OpenGL中两种计算投影矩阵的函数
- SQLServer如何快速生成100万条不重复的随机8位数字
- jquery的一些用法
- Light OJ 1037 - Agent 47(预处理状态压缩DP)
- 优秀的开发者 vs. 差的开发者
- 七.生成n位随机字符串
- AOJ 2249 Road Construction(Dijkstra+优先队列)
- Centos7/RHEL7 开启kdump
- 转载:Java Lock机制解读
- 转:Jmeter分布式测试
- audiounit错误码对应值查询
- STS启动时卡在loading加载 dashboard.ui
- MySQL优化(1)--------常用的优化步骤
- 终于知道linux firefox不能播放 web在线词典的单词发音了! --通过banshee安装gstreamer1-libav/-plugins-ugly/plugins-bad三个mp3插件.
- iOS 里RGB 配色 UIColor colorWithRed
热门文章
- IDA resources - Script, Plugin, Project, Book, Tutorial
- [SQL基础]入门
- 在安卓上,微信公众号无法分享到QQ的解决办法之一
- 终于理解了什么是LGPL
- Maven:Maven 入门
- (原)将Oracle迁移到SQLServer
- 5)Linux程序设计入门--信号处理
- HTML:基本的标签
- 基于restful注解(spring4.0.2整合flex+blazeds+spring-mvc)<;一>;
- 给出a的定义 -- 指针 和 数组