`
LiYunpeng
  • 浏览: 952381 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

SpringMVC中,捕捉Controller返回值进行拦截处理

阅读更多
SpringMVC中,首先是Interceptor,另外就是实现WebRequestInterceptor
可以在请求Controller之前和执行之后进行拦截处理
但是还没有发现如何获取调用方法的返回值

所以,就打算自己通过AOP来写返回值的捕捉并进行相应的处理


应用场景是,我希望通过MVC返回的结果是统一的格式和规则,并且有一些预设字段

使用AOP时,会分别有CGLIB和Java自带的动态代理,但是对于Controller的捕捉,我看网上说无法使用自带的动态代理,所以,此处使用CGLIB
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib-nodep</artifactId>
			<version>${cglib.version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aspectj.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspectj.version}</version>
		</dependency>

pom里面所加


我是使用了注解形式,需要在Spring配置文件中添加
<aop:aspectj-autoproxy />

在自定义的Aspect类上添加注解@Aspect以及SpringIOC的@Component

首先注册切入点
@Pointcut("execution(* com.liyunpeng.www.gateway.controller.*.*(..))") 
    public void resultMapAspect(){} 

再根据切入点,配置相应的执行方法
@AfterReturning(value = "resultMapAspect()",returning="resultMap")
    public void abc(JoinPoint joinpoint,Object resultMap) throws Throwable {
此处的resultMap就是通过Controller之后的返回值了,我们可以进行处理相关的内容


另外,也可以通过aop:config标签来配置aop
除了afterReturning意外,还有before around after,分别是执行前、执行前+后、执行后
只不过afterReturning可以获取对应的返回值和参数。
分享到:
评论

相关推荐

    详解利用SpringMVC拦截器控制Controller返回值

    在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,它可以对HTTP请求进行预处理(preHandle)、后处理(postHandle)以及清理工作(afterCompletion)。在这个场景中,我们利用拦截器来控制Controller...

    springmvc_controller_01

    8. **拦截器**:通过实现 `HandlerInterceptor` 接口,可以创建自定义的拦截器,对请求进行预处理和后处理,比如登录检查、权限验证等。 9. **RESTful 风格**:Spring MVC 支持 RESTful 风格的 URL 设计,利用 ...

    SpringMVC拦截器例子详解

    - 拦截器不能访问Controller方法的返回值,但可以在`postHandle()` 方法中访问`ModelAndView` 对象,从而对视图进行操作。 通过理解并熟练运用Spring MVC的拦截器,开发者可以有效地组织代码,提高系统的可维护性...

    Java SpringMVC 学习路线.pdf

    在开始学习SpringMVC之前,需要了解如何搭建开发环境,包括创建Dynamicweb项目、导入SpringMVC所需jar包、编写TestController类、创建JSP页面、配置springmvc.xml核心配置文件以及在web.xml中配置前端控制器。...

    一个简单的springMVC入门项目

    8. **异常处理**:SpringMVC提供了一种优雅的方式处理程序中的异常,可以定义全局的异常处理器,或者在Controller方法上使用`@ExceptionHandler`注解来捕获特定异常。 9. **国际化与本地化**:SpringMVC支持多语言...

    SpringMVC面试专题及答案.pdf

    - **单例模式**:SpringMVC 中的 Controller 默认是单例模式,这意味着所有的请求都将由同一个实例处理。 - **线程安全问题**:由于多个线程可能同时访问同一实例,因此可能会导致线程安全问题。 - **解决方案**:...

    SpringMVC学习笔记整合搭建框架

    3、Controller方法返回值 4、SpringMVC中异常处理 5、图片上传处理 6、Json数据交互 7、SpringMVC实现RESTful 8、拦截器 2.Spring入门 2.1.Springmvc是什么 3.3.jdbc编程步骤: 1、加载数据库驱动 2、创建并获取...

    SpringMVC视频教程_初学者一头扎进 springmvc

    在SpringMVC中,Controller通常是一个@Controller注解的Java类,包含处理用户请求的方法,这些方法使用@RequestMapping注解来指定URL映射。方法的返回值可以是视图名称,或者可以直接返回一个ModelAndView对象,包含...

    springMVC教程

    SpringMVC 的拦截器可以对请求进行预处理和后处理,例如实现登录验证、日志记录等功能。通过 `HandlerInterceptor` 接口定义拦截器,然后在配置中注册。 本教程全面覆盖了 SpringMVC 的关键知识点,包括环境搭建、...

    SpringMVC四种映射方式实例代码

    本实例代码着重讲解了SpringMVC中的四种映射方式以及拦截器的实现,这对于理解和掌握SpringMVC的请求处理机制至关重要。 1. **四种映射方式**: - **通配符映射**:`@RequestMapping("/path/*")`,星号(*)代表任意...

    Spring拦截器,高级参数绑定

    在Spring框架中,拦截器(Interceptor)是一种强大的...在实际开发中,可以利用Spring的拦截器实现诸如权限控制、日志记录等功能,而高级参数绑定和灵活的Controller返回值处理则极大地提高了开发效率和代码的可读性。

    SpringMVC 拦截器实现分析.docx

    - `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`: 在Controller处理方法执行前调用,返回值为布尔类型,如果返回`false`,则会中断后续的处理,直接触发`...

    从源码的角度来看SpringMVC.zip

    SpringMVC中的拦截器通过实现`HandlerInterceptor`接口,可以在请求进入Controller前和离开Controller后进行额外操作,如日志记录、权限验证等。 9. **ExceptionResolver**:异常处理器,当Controller抛出异常时,...

    springmvc第一天课堂笔记.docx

    - **配置处理器适配器**:在`springmvc.xml`中配置处理器适配器,如`SimpleControllerHandlerAdapter`,以便能够执行实现`Controller`接口的处理器。 - **开发处理器**:创建一个实现`Controller`接口的类,例如`...

    跟我学SpringMVC

    - **处理器拦截器**:类似于过滤器,但在SpringMVC中有不同的生命周期和作用。 - **SpringMVC 3.1新特性**:包括生产者、消费者请求限定等。 #### 六、总结 通过以上内容的学习,我们不仅了解了SpringMVC的基本...

    SpringMVC面试专题.pdf

    SpringMVC中函数的返回值类型多样,可以是String或其他类型。例如返回String时,通常代表返回的是视图的名称。返回ModelAndView时,则包含模型数据和视图信息。通过返回值,SpringMVC能够与视图解析器协作,将数据...

    springmvc入门程序(下载后你不会后悔的)

    2. **处理流程**:SpringMVC采用了更轻量级的前端控制器设计,而Struts2采用拦截器链。 3. **学习曲线**:SpringMVC的学习曲线相对较平缓,因为它更依赖于现有的Java编程经验;而Struts2有一套较为复杂的概念体系。 ...

    SpringMVC流程分析

    在异步处理中,SpringMVC使用Callable来处理返回值,WebAsyncManager负责启动Callable处理流程,并最终通过AsyncContext将结果分发到客户端。这种方式可以有效提升应用性能,尤其是在处理耗时任务时。 另外,...

Global site tag (gtag.js) - Google Analytics