使用 aop拦截 springMVC的controller并获取请求参数及返回结果

本文介绍了如何使用AOP在SpringMVC中拦截Controller,包括配置扫描、编写AOP相关bean以及如何拦截指定方法和自定义注解的方法。详细解释了在配置@Component-scan时排除@Controller的重要性,以及在@AfterReturning和@Before注解中正确匹配方法参数以确保拦截成功。
摘要由CSDN通过智能技术生成



有人说使用aop拦截不到springMVC的controller,一般出现此种情况大多是由于配置错误造成,不废话直接进入主题:


1、applicationContext.xml 配置扫描 除@controller外的bean

<context:component-scan base-package="XXX" scoped-proxy="targetClass">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

2、 applicationContext-mvc.xml 配置扫描 @controller bean


<mvc:annotation-driven />
<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:component-scan base-package="xxxxx.controller" >

在Spring MVC中,可以使用拦截器(Interceptor)来修改HTTP请求参数拦截器是一种预处理器,它在控制器方法处理请求之前或之后执行自定义逻辑。下面是一个简单的例子,展示如何创建一个拦截器来修改请求参数: 首先,创建一个实现了`HandlerInterceptor`接口的Java类: ```java import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class RequestParameterModifier implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 获取请求参数并修改 String originalParam = request.getParameter("originalParam"); if (originalParam != null) { request.setAttribute("modifiedParam", "newValue"); // 修改参数值 } return true; // 允许请求继续处理 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 如果你想在处理完后做些操作,可以在这部分添加 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 异常处理或者清理工作 } } ``` 然后,在Spring配置文件中注册这个拦截器: ```xml <bean id="requestParameterModifier" class="com.example.RequestParameterModifier" /> <aop:config> <aop:interceptor ref="requestParameterModifier"> <aop:around method="preHandle" pointcut="execution(* com.example.controller.*.*(..))"/> </aop:interceptor> </aop:config> ``` 这里的`pointcut`表达式指定了拦截所有`com.example.controller`包下的控制器方法的请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值