由于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("您没有该权限");
}
}
//原文地址:http://zg770423.blog.163.com/blog/static/13826688820112275259181/
分享到:
相关推荐
标题 "gwt+spring+hibernate" 涉及的是一个使用Google Web Toolkit (GWT)、Spring框架和Hibernate ORM技术的集成示例。这是一个常见的Web应用开发组合,用于构建高效、可扩展且功能丰富的Java web应用程序。下面将...
一个GWT+Spring2+Spring Security2+Hibernate3的实例,数据库为mssql.在/GwtWeb/WebRoot/WEB-INF/lib 目录下RequiredJar.txt有需要用到的库说明 修改一下applicationContext.xml的数据库设定就可以使用
SmartGWT + Spring + Hibernate 是一个常见的企业级应用开发组合,它们各自在Web应用程序开发中扮演着重要角色。SmartGWT是基于GWT(Google Web Toolkit)的一个强大的UI库,提供丰富的用户界面组件和高性能的...
【标题】"GWT+Spring demo- springgwt_sudoku" 涉及的主要知识点是Google Web Toolkit (GWT) 和Spring框架的整合应用。这是一个实际的项目示例,展示了如何将GWT的客户端能力与Spring的服务器端功能相结合,以创建一...
标题"**gwt+spring**"表明我们将探讨如何将这两个框架整合在一起,以便在同一个项目中利用它们的优势。尽管相对于其他组合,GWT与Spring的整合资料可能较少且版本较旧,但依然有重要的实践价值。 首先,整合GWT和...
Spring的AOP可以方便地实现日志记录、权限控制等功能。 整合步骤通常包括以下几个部分: 1. **配置Spring**:创建Spring的配置文件,定义SmartGwt的服务和Mybatis的数据源、SqlSessionFactory以及Mapper接口的Bean...
GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合,也可以上新浪博客去看 http://blog.sina.com.cn/s/blog_687dfecb0100yrmf.html
2. **SmartGWT与Spring集成**:SmartGWT的ServiceProxy可以与Spring的Bean集成,通过Spring的ApplicationContext获取服务。这样,GWT客户端可以通过ServiceProxy调用服务器端的Spring服务。 3. **Mybatis与Spring...
标题 "GWT+EXT+STRUTS2+Eclipse完整范例.rar" 提示我们这是一个包含一个集成开发环境Eclipse的项目,该项目集成了Google Web Toolkit (GWT), EXT JS 和Struts2框架。描述 "整合 GWT EXT STRUTS2 Eclipse 范例" 明确...
ExtJS组件如Grid、Form等可以利用GWT服务获取数据或提交用户输入。通过这种方式,你可以构建一个既具有强大UI功能,又具备高效后台处理能力的Web应用程序。 总结来说,"Ext + GWT + Struts2.0"的开发模式允许你利用...
对于开发者来说,理解GWT的Widget体系、Spring的IoC和AOP机制,以及Hibernate的ORM操作,是掌握GWT与Spring整合的关键。通过这种方式,开发者可以充分利用Java的强类型和丰富的生态系统,同时享受到GWT带来的高性能...
在【压缩包子文件的文件名称列表】中,"gwt+gxt"可能表示的是包含GWT和GXT库的JAR文件,例如GWT的gwt-user.jar、gwt-dev.jar以及GXT的gxt.jar、gxt-theme-neptune.jar等。这些JAR文件通常需要添加到项目的类路径中,...
叉和星演示-gwt-spring 克隆分叉项目 如何从原始回购更新我的回购 git 远程添加上游 git pull 上游主 请注意您是否已经对本地仓库进行了更改!! 如何编译: mvn Eclipse:Eclipse mvn 全新安装 如何导入项目:...
完整代码,绝对能用:Spring和...GWT部分集成了Spring的Service(网上的例子很少,要不代码不全,要不不能使用,这个保证完全可以使用)。请注意各个配置文件,程序所用的包都在WEB-INF下的图片上,请自行下载。
在本项目中,“gwt+WebService,构建中国股票实时查看面板”是一个利用GWT(Google Web Toolkit)技术和Web服务(WebService)来开发的应用程序,旨在实现实时展示中国股票市场的数据。GWT是一个开放源码的Java框架...
【Ext + Gwt + Struts2.0 开发1】是一个关于集成三种技术进行Web应用开发的主题。在本文中,我们将深入探讨这三者的技术特点以及如何将它们整合在一起。 **Ext** 是一个用于构建富客户端界面的JavaScript库,它提供...
在本文中,我们将探讨如何使用Ext、Gwt和Struts2.0这三种技术结合进行Web应用开发。首先,理解每个技术的核心概念是至关重要的。 **Ext** 是一个JavaScript库,用于构建富客户端应用程序,提供了丰富的用户界面组件...