springmvc + AOP 获取Controller HttpServletRequest及HttpServletResponse
来源:互联网 发布:什么是软件危机 编辑:程序博客网 时间:2024/05/20 05:22
springmvc + AOP
需求描叙:
- 在之前的系统新增用户属性采集功能
- 记录用户是否注册成功
- 不能修改原系统的代码
- 原系统采用spring MVC架构
- springmvc + AOP 获取Controller HttpServletRequest及HttpServletResponse
实现流程
- 修改原项目web.xml
- 修改 spring的配置文件applicationContext.xml
- 引用实现aop功能的jar
- 新建java工程实现aop功能并打包成jar
- 在原系统依赖新功能jar
- 测试新功能
原web工程修改原项目web.xml
在web.xml添加以下代码
<listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>
原web工程修改spring的配置文件
xmlns:aop="http://www.springframework.org/schema/aop"http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd <aop:aspectj-autoproxy/>
新建工程引用实现aop功能的jar
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>1.4.1.RELEASE</version> </dependency>
新建java工程实现aop功能
package com.foresee.xwzx.aop.xwcj_cjpt_aop_java;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.foresee.dzswj.service.configuration.utils.ForeseePropertyUtil;import com.sensorsdata.analytics.javasdk.SensorsAnalytics;import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException;/** * <pre>注册egisteAccount.do函数的aop增强功能,记录用户是否注册成功</pre> * @author xieyuan * */@Aspect@Componentpublic class UserRegistAspect { @Pointcut("execution(* (aop被环绕的class文件).egisteAccount(..))") public void UserInfoController(){} public UserRegistAspect(){ } @Around("egisteAccount()") public Object recourdRegis(ProceedingJoinPoint pjp){ logger.info("Come into RegistAspect !"); HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); String yhm = req.getParameter("yhm"); String sjh= req.getParameter("sjh"); //得到egisteAccount方法返回的map Object result =pjp.proceed(); Map<String,Object> map =new HashMap<String,Object>(); try { map = (Map<String, Object>) result; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } map.put("message":"Controller返回值已被修改") return result; }}
原系统引用新建工程
原web工程pom.xml
测试
本地debug模式启动原来web工程之后,发现aop取到request的参数,浏览器取到的reponse数据是经过aop加工之后的数据!
阅读全文
0 0
- springmvc + AOP 获取Controller HttpServletRequest及HttpServletResponse
- servlet获取HttpServletRequest、HttpServletResponse
- springmvc 得到HttpServletRequest、HttpServletResponse、HttpSession
- httpServletRequest,HttpServletResponse (方法及作用)
- SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession
- 使用 aop拦截 springMVC的controller并获取请求参数及返回结果
- 获取HttpServletRequest / HttpSession / ServletContext / HttpServletResponse对象
- 获取HttpServletRequest / HttpSession / ServletContext / HttpServletResponse对象 .
- Spring集成CXF客户端获取HttpServletRequest,HttpServletResponse
- Struts获取HttpServletRequest / HttpSession / ServletContext / HttpServletResponse对象
- 浅谈ServletContext,HttpServletRequest,HttpServletResponse,HttpSession的获取
- springmvc获取HttpServletRequest对象
- HttpServletRequest /HttpServletResponse
- httpservletrequest,httpservletresponse
- Springmvc AOP拦截Controller获取session(自定义注解的方式)
- SpringMVC在controller层注入HttpServletRequest
- servlet客户端http请求及响应及httpservletrequest,httpservletresponse详解
- SpringMVC的AOP拦截controller
- scala基础
- 二进制文件与base64编码文本文件转换
- ASP.NET MVC
- 牧场上的草泥马(游荡的奶牛)
- mvp封装的OKhttp
- springmvc + AOP 获取Controller HttpServletRequest及HttpServletResponse
- 分享18个常用的网站性能测试工具
- php中使用mb_strlen解决中文字符数
- cocos android 打开相机,相册并裁剪
- A Cookbook for Machine Learning: Vol 1
- ASP.NET MVC
- STM32:利用VM8978和I2S实现录音的频率分析
- Linux下用 lsof 命令查找指定端口被哪个进程占用
- YxImage 图像处理库