由于Spring 的AOP面向切面编程,与Servlet容器没有任何关联,所以想要获得Session会话比较麻烦。
当然Struts2同样不依赖Servlet容器,可以在Spring AOP中可以使用com.opensymphony.xwork2.ActionContext,就可以获得Session。
但是在Servlet中或struts1中,可以通过ThreadLocal方式将session保存,Spring AOP中获得Session对象。
//这个是保存request和session的类
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();
}
}
//这个是配置的过滤器
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包下的所有类的方法
@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("您没有该权限");
}
}
分享到:
相关推荐
在Spring中,Bean可以具有不同的作用域(scope),如singleton(单例)、prototype(原型)、request、session等。此外,通过`lazy-init`属性可以设置延迟初始化,`init-method`和`destroy-method`指定初始化和销毁...
### Spring AOP 实现流程日志跟踪 #### 一、背景与目的 在现代软件开发过程中,为了确保系统的稳定性和可维护性,通常会引入非功能性的需求来增强应用程序的功能,比如日志记录、安全控制等。这些需求往往不是业务...
Spring MVC、Spring AOP、Spring Security和Hibernate是Java开发中常用的四大框架,它们各自负责不同的领域,但在实际项目中往往需要进行整合以实现更高效、更安全的开发。本实例代码提供了一个完整的整合示例,涵盖...
4. **Bean的作用域**:Spring支持单例(Singleton)、原型(Prototype)、会话(Session)和请求(Request)四种作用域,满足不同场景下的需求。 **Spring AOP** 面向切面编程(AOP)是Spring框架的另一大特色,它...
在Spring框架中,我们可以利用Hibernate SessionFactory和Session接口进行数据持久化操作。 集成Spring AOP和Hibernate进行事务管理,通常会涉及以下几个步骤: 1. 配置Hibernate:首先,我们需要配置Hibernate的...
面试必考之HashMap源码分析与实现 探索JVM底层奥秘ClassLoader源码分析与案例讲解 面试必备技能之Dubbo企业实战 ...互联网系统垂直架构之Session解决方案 分库分表之后分布式下如何...无处不在的Spring AOP事务及踩过的坑
4. **Bean的作用域**:Spring提供了多种Bean的作用域,如单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等,根据不同的需求选择合适的Bean作用域。 5. **Bean的生命周期**:Spring容器对...
Spring作为一款全功能的轻量级框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及事务管理等。而Hibernate则是一款强大的对象关系映射(ORM)工具,它简化了数据库操作,使开发者可以使用面向对象的...
* HibernateTemplate是对session的轻量级的封装 * 默认事务回滚异常是RuntiimeException(包括所有继承RuntimeException的子类).普通异常不回滚 * 在编写业务逻辑方法时,最好将异常一直往上抛出,由表示层处理...
Struts2、Hibernate和Spring AOP是Java Web开发中三个重要的框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理HTTP请求,实现业务逻辑与视图的解耦;Hibernate是一个持久化框架...
在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的依赖注入(IOC)和面向切面编程(AOP)功能使得复杂的应用管理变得轻松。而Hibernate作为一款优秀的对象关系映射(ORM)框架,简化了数据库操作。将...
SSH-AOP笔记主要涵盖的是Spring、Struts和Hibernate三大框架集成使用时,如何结合Aspect Oriented Programming(面向切面编程)的理念进行应用增强。在Java企业级开发中,SSH是常用的MVC架构,而AOP则是一种编程范式...
Spring AOP事务管理是Java开发中的重要组成部分,它极大地简化了在分布式系统中对事务的处理。Spring通过AOP(面向切面编程)提供了一种声明式事务管理方式,允许开发者将事务规则与业务逻辑分离,提高了代码的...
spring aop action中验证用户登录状态的实例代码 本篇文章主要介绍了spring aop action中验证用户登录状态的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 在学习ssh框架时,通常在一些需要用户...
Spring 是一个开源的应用框架,它提供了面向切面编程(AOP)和依赖注入(DI)的功能,简化了Java应用的开发。Spring 4 是该框架的一个版本,增加了对Java 8的支持,改进了对WebSocket协议的处理,以及增强了对JSR-...
Spring AOP实现功能权限校验功能的示例代码 本篇文章主要介绍了Spring AOP实现功能权限校验功能的示例代码,通过使用拦截器和AOP技术来实现未登录时跳转到登录界面的功能,以及在service层方法中抛异常来实现权限...
"spring-core-4.2.4.RELEASE.jar"是Spring框架的核心模块,包含基本的依赖注入和AOP等功能。 集成Spring Session时,需要在Spring Boot或传统Spring应用的配置文件中指定session存储类型,并配置相应的连接参数。...
4. **实现DAO接口**:Spring的HibernateTemplate或JpaTemplate可以帮助我们轻松实现这些接口,它们处理了与Hibernate Session的交互。 5. **使用Transaction Management**:Spring的声明式事务管理允许我们在XML...
标题 "开源框架spring详解-----AOP的深刻理解" 指向的是对Spring框架中核心概念之一的面向切面编程(Aspect Oriented Programming, AOP)的深入探讨。AOP是Spring用来解决横切关注点问题的一种编程模式,它允许...