`
liweitsky
  • 浏览: 45039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring AOP(一)获取操作参数request、session、application

阅读更多
springAOP的用途极其广泛,但在struts2之前request等获取是个问题,这里简单介绍一下我的方法:
struts1中两种方法:
1.通过threadlocal
先写java类
package com.util; 
import java.io.Serializable; 

import javax.servlet.http.HttpServletRequest; 


public class ThreadTest implements Serializable{ 
      private static ThreadLocal<Object> threadLocal = new ThreadLocal<Object>(); 

public HttpServletRequest getContext(){ 
      return (HttpServletRequest)threadLocal.get(); 
} 
public void setContext(HttpServletRequest request){ 
      threadLocal.set(request); 
} 

public void cleanContext(){ 
      threadLocal.set(null); 
} 
} 

配置为filter
<filter>
	<filter-name>test</filter-name>
	<filter-class>com.util.ThreadTest</filter-class>
</filter>
<filter-mapping>
	<filter-name>test</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

最后在aop方法中只要包含HttpServletRequest request, HttpServletResponse response参数就可以了

方法二:
public Object saveLog(ProceedingJoinPoint joinPoint) throws Throwable {
		Object retVal = null;
		try {
			if(logDao == null){
				String[] locations={"applicationContext-beans.xml","applicationContext-actions.xml", "applicationContext-common.xml"};
				ApplicationContext ctx = new ClassPathXmlApplicationContext(locations);
				logDao = (LogDao) ctx.getBean("logDao");
			}
			//logDetail(jointPoint,":startTime:");
			retVal = joinPoint.proceed();

			Object[] args = joinPoint.getArgs();
			HttpServletRequest request = null;
			ActionMapping mapping = null;
                        //通过分析aop监听参数分析出request等信息
			for (int i = 0; i < args.length; i++) {
				if (args[i] instanceof HttpServletRequest) {
					request = (HttpServletRequest) args[i];
				}if (args[i] instanceof ActionMapping) {
					mapping = (ActionMapping) args[i];
				}
			}
			Person person = new Person();
			if (request != null) {
				person = (Person) request.getSession().getAttribute("login");
			}
			String method = request.getParameter("method");
			System.out.println("------------------------------------"+SystemContext.getOffset());
			//登录日志
			if (method.equals("login")) {
			}
			//查看
			if (method.equals("showAll")) {
			}
			}

			//logDetail(joinPoint,":endTime:");
		} catch (Exception ee) {
			System.out.println("出错:" + ee.toString());
		}
		return retVal;
	}


在struts2中request等作为系统参数,已经可以直接调用了
0
1
分享到:
评论

相关推荐

    Spring框架实用知识库分享

    * 演示如何使用singleton、prototype、request、session、global session等作用域 * 介绍Bean对象的生命周期,包括实例化、依赖注入、初始化、销毁等阶段 第4篇 SpringBoot创建与运行 * 介绍Spring Boot框架的基本...

    spring,获取IP精选.doc

    1. **HttpServletRequest**: Spring MVC 中的 Controller 方法参数可以直接接受 `HttpServletRequest` 对象,然后通过 `request.getRemoteAddr()` 来获取 IP 地址。但需要注意,如果应用部署在反向代理(如 Nginx)...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. ...

    spring源码解读.txt

    - Spring支持多种作用域,包括singleton、prototype、request、session等。 - 不同的作用域适用于不同的场景,如singleton适用于单例模式,而prototype则适用于每次请求都需要创建新实例的情况。 5. **依赖注入**...

    Spring面试题详细讲解

    Spring面试题详细讲解 Spring 是什么? Spring 是一个轻量级的 ...1. Spring 事务的只读“只读事务”并不是一‘’个强制选项,它只是一个“暗示”,提示数据库驱动程序和数据库系统,这个事务并不包含更改数据的操作

    spring 学习 springcore例子

    10. **SpEL(Spring Expression Language)**:Spring表达式语言是Spring Core的一部分,用于在运行时查询和操作对象图。它可以用来设置Bean的属性值,或者在AOP通知中进行复杂的逻辑判断。 在“springcore”这个...

    25个经典的Spring面试问答

    7. **Spring AOP与AspectJ**:Spring AOP实现了面向切面编程,允许开发者定义横切关注点,如日志、事务管理等,AspectJ是一种强大的AOP语言,可以与Spring集成,提供更强大的AOP功能。 8. **Spring与其他技术集成**...

    16.spring与springmvc常见面试题.docx

    答:Spring 容器中的 bean 可以分为 5 个范围:singleton、prototype、request、session、global-session、application。singleton:这种 bean 范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个...

    springboot学习思维笔记.xmind

    通过设定jvm的spring.profiles.active参数 web项目设置在Servlet的context parameter中 事件Application Event 自定义事件,集成ApplicationEvent 定义事件监听器,实现ApplicationListener 使用容器...

    Spring 开发参考手册

    Spring 提供了一种轻量级的方式来管理和配置 Java 对象(Beans),并通过依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等机制来实现这一目标。 **Spring** 的核心功能...

    spring-beans源码

    Spring支持五种Bean的作用域:单例(Singleton)、原型(Prototype)、请求(Request)、session(Session)和全局会话(Global Session)。不同的作用域决定了Bean的实例化策略和生命周期。 7. **Bean后处理器** ...

    SPRING面试宝典

    AOP(Aspect Oriented Programming)模块是Spring框架中的一个重要组成部分,它提供了一种在运行时动态插入代码的能力,可以用来实现诸如日志记录、性能监控等功能,而不必修改业务逻辑代码本身。 **1.8 解释JDBC...

    Spring Reference - Core Technologies.pdf

    Spring为Web应用定义了request、session、application和WebSocket作用域。 1.5.5 自定义作用域 Spring允许自定义作用域,开发者可以创建自己的作用域以及在自定义作用域中使用Bean。 1.6 自定义Bean的性质 Spring...

    Spring5.0中文开发手册

    - **3.5.4 Request, session, application, and WebSocket scopes** - 在Web环境中特定的作用域。 - **3.5.5 自定义作用域** - 开发者可以根据需要定义自己的作用域。 - **3.6 Customizing the nature of a ...

    Spring相关面试题.docx

    Spring 支持singleton、prototype、request、session、global session 等多种作用域。 自动装配 24. 什么是 bean 装配? bean 装配是指 Spring 框架自动将依赖项注入到 Bean 中的过程。 25. 什么是 bean 的自动...

    详解Spring Controller autowired Request变量

    此外,Spring还提供了web相关的作用域,比如request、session和application作用域。其中request作用域保证了在同一个HTTP请求中同一个bean的唯一性,session作用域保证了在一个用户的会话中同一个bean的唯一性,而...

    spring配置最佳实践.zip

    Spring支持单例(Singleton)、原型(Prototype)、请求(Request)和会话(Session)等多种bean作用域。理解每种作用域的特点并正确使用是确保应用程序行为一致的关键。 七、AOP编程 Spring的面向切面编程(AOP)...

    Spring教材

    Spring 2.0和2.5引入了更多的bean作用域,除了原有的singleton(单例)和prototype(原型)之外,还包括session、request、globalSession等Web环境下的作用域,以及application作用域,使得对象的生命周期管理更加...

    SpringFramework常见知识点.md

    1. **语言级别**:AspectJ 是一种完整的面向切面的语言,而 Spring AOP 是基于现有 Java 语言的。 2. **实现方式**:AspectJ 支持编译期和运行期的织入,而 Spring AOP 主要在运行期实现。 3. **支持范围**:AspectJ...

Global site tag (gtag.js) - Google Analytics