`
mengqingyu
  • 浏览: 333122 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

(转载)spring AOP获得session

 
阅读更多
由于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 AOP IOC源码笔记.pdf

    在Spring中,Bean可以具有不同的作用域(scope),如singleton(单例)、prototype(原型)、request、session等。此外,通过`lazy-init`属性可以设置延迟初始化,`init-method`和`destroy-method`指定初始化和销毁...

    spring aop切面拦截指定类和方法实现流程日志跟踪

    ### Spring AOP 实现流程日志跟踪 #### 一、背景与目的 在现代软件开发过程中,为了确保系统的稳定性和可维护性,通常会引入非功能性的需求来增强应用程序的功能,比如日志记录、安全控制等。这些需求往往不是业务...

    SpringMVC+springAOP+spring security+Hibernate整合实例代码

    Spring MVC、Spring AOP、Spring Security和Hibernate是Java开发中常用的四大框架,它们各自负责不同的领域,但在实际项目中往往需要进行整合以实现更高效、更安全的开发。本实例代码提供了一个完整的整合示例,涵盖...

    Spring IOC和Spring AOP_spring aop_springIOC

    4. **Bean的作用域**:Spring支持单例(Singleton)、原型(Prototype)、会话(Session)和请求(Request)四种作用域,满足不同场景下的需求。 **Spring AOP** 面向切面编程(AOP)是Spring框架的另一大特色,它...

    SpringAOP整合Hibernate并使用事务(模拟买书的过程)

    在Spring框架中,我们可以利用Hibernate SessionFactory和Session接口进行数据持久化操作。 集成Spring AOP和Hibernate进行事务管理,通常会涉及以下几个步骤: 1. 配置Hibernate:首先,我们需要配置Hibernate的...

    java面试难点讲解:hashmap,spring aop,classload,dubbo,zookeeper,session等。

    面试必考之HashMap源码分析与实现 探索JVM底层奥秘ClassLoader源码分析与案例讲解 面试必备技能之Dubbo企业实战 ...互联网系统垂直架构之Session解决方案 分库分表之后分布式下如何...无处不在的Spring AOP事务及踩过的坑

    spring ioc和aop原理流程图(详细)

    4. **Bean的作用域**:Spring提供了多种Bean的作用域,如单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等,根据不同的需求选择合适的Bean作用域。 5. **Bean的生命周期**:Spring容器对...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    Spring作为一款全功能的轻量级框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及事务管理等。而Hibernate则是一款强大的对象关系映射(ORM)工具,它简化了数据库操作,使开发者可以使用面向对象的...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    * HibernateTemplate是对session的轻量级的封装 * 默认事务回滚异常是RuntiimeException(包括所有继承RuntimeException的子类).普通异常不回滚 * 在编写业务逻辑方法时,最好将异常一直往上抛出,由表示层处理...

    struts2+hirbenate+SpringAOP

    Struts2、Hibernate和Spring AOP是Java Web开发中三个重要的框架,它们分别负责不同的职责。Struts2作为MVC(Model-View-Controller)框架,主要处理HTTP请求,实现业务逻辑与视图的解耦;Hibernate是一个持久化框架...

    SpringAOP整合Hibernate并使用事务

    在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的依赖注入(IOC)和面向切面编程(AOP)功能使得复杂的应用管理变得轻松。而Hibernate作为一款优秀的对象关系映射(ORM)框架,简化了数据库操作。将...

    ssh-aop笔记

    SSH-AOP笔记主要涵盖的是Spring、Struts和Hibernate三大框架集成使用时,如何结合Aspect Oriented Programming(面向切面编程)的理念进行应用增强。在Java企业级开发中,SSH是常用的MVC架构,而AOP则是一种编程范式...

    无处不在的Spring AOP事务及踩过的坑

    Spring AOP事务管理是Java开发中的重要组成部分,它极大地简化了在分布式系统中对事务的处理。Spring通过AOP(面向切面编程)提供了一种声明式事务管理方式,允许开发者将事务规则与业务逻辑分离,提高了代码的...

    spring aop action中验证用户登录状态的实例代码

    spring aop action中验证用户登录状态的实例代码 本篇文章主要介绍了spring aop action中验证用户登录状态的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 在学习ssh框架时,通常在一些需要用户...

    spring4+springmvc+mybatis3+redis2.8+spring-session框架搭建

    Spring 是一个开源的应用框架,它提供了面向切面编程(AOP)和依赖注入(DI)的功能,简化了Java应用的开发。Spring 4 是该框架的一个版本,增加了对Java 8的支持,改进了对WebSocket协议的处理,以及增强了对JSR-...

    Spring AOP实现功能权限校验功能的示例代码

    Spring AOP实现功能权限校验功能的示例代码 本篇文章主要介绍了Spring AOP实现功能权限校验功能的示例代码,通过使用拦截器和AOP技术来实现未登录时跳转到登录界面的功能,以及在service层方法中抛异常来实现权限...

    spring-session.zip

    "spring-core-4.2.4.RELEASE.jar"是Spring框架的核心模块,包含基本的依赖注入和AOP等功能。 集成Spring Session时,需要在Spring Boot或传统Spring应用的配置文件中指定session存储类型,并配置相应的连接参数。...

    spring(ioc aop等..)例子

    4. **实现DAO接口**:Spring的HibernateTemplate或JpaTemplate可以帮助我们轻松实现这些接口,它们处理了与Hibernate Session的交互。 5. **使用Transaction Management**:Spring的声明式事务管理允许我们在XML...

    开源框架spring详解-----AOP的深刻理解

    标题 "开源框架spring详解-----AOP的深刻理解" 指向的是对Spring框架中核心概念之一的面向切面编程(Aspect Oriented Programming, AOP)的深入探讨。AOP是Spring用来解决横切关注点问题的一种编程模式,它允许...

Global site tag (gtag.js) - Google Analytics