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

对spring中的Controller做拦截

阅读更多
spring中对自己的Controller有专门的拦截器,如果你用spring的AOP进行拦截的话,是不能拦截的。下面是利用spring的HandlerInterceptorAdapter类来做的拦截。
1.拦截器的代码:
public class BlockControllAdvice extends HandlerInterceptorAdapter  {
    private static final Logger log = Logger.getLogger(BlockControllAdvice.class);

    /** 权限验证方法,
     *
     * @param request,response,handler
     * @return boolen
     * @auther kaungyujian
     */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        
        log.debug("into controller advice........");
        
        MultiActionController maControl = (MultiActionController) handler;
        ParameterMethodNameResolver pmrResolver = (ParameterMethodNameResolver) maControl.getMethodNameResolver();
        String methodName = pmrResolver.getHandlerMethodName(request);
        String className = handler.getClass().getName();
        String path = request.getRequestURI();   //获得请求的路径    }
}

2.配置拦截器:
 <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="beforeBlock"/>
            </list>
        </property>
        <property name="mappings">
            <props>
                <prop key="/test.do">testController</prop>
            </props>
        </property>
    </bean>

    <bean id="beforeBlock" class="com.juraglobal.softguard.common.web.action.BlockControllAdvice"/>

3.拦截器如果要中断运行,这里的方法只能抛出异常:
 <bean id="exception" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="com.juraglobal.softguard.common.web.action.RightPassException">noRight</prop>
            </props>
        </property>
    </bean>
分享到:
评论
3 楼 郑智睿 2015-03-05  
郑智睿 写道
对实现了接口的Controller是可以使用AOP拦截的,比如implements Controller{//...},如果不是,可能不能拦截(我暂时还没找到原因),比如extends MutilActionController{//...}


--------------------------------------------------------------------
如果去掉继承,改用委托的形式,仍旧可以拦截
2 楼 郑智睿 2015-03-05  
对实现了接口的Controller是可以使用AOP拦截的,比如implements Controller{//...},如果不是,可能不能拦截(我暂时还没找到原因),比如extends MutilActionController{//...}
1 楼 Eric.Yan 2012-07-16  
"spring中对自己的Controller有专门的拦截器,如果你用spring的AOP进行拦截的话,是不能拦截的"
是这样的么?如果真是这样,那就解开我的困惑了,谢谢

相关推荐

    Spring Mvc AOP通过注解方式拦截controller等实现日志管理

    本教程将详细介绍如何利用注解来配置和使用AOP来拦截Controller层的方法,以便记录执行过程中的相关信息,实现日志管理。 一、Spring AOP基础 AOP是Spring框架的核心组件之一,它允许程序员定义“切面”,这些切面...

    springaop拦截controller日志

    "springaop拦截controller日志"这个主题旨在讲解如何使用Spring AOP来拦截Controller层的方法调用,并在方法执行前后记录相关日志。 首先,了解Spring AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”...

    Spring Controller拦截器配置

    ### Spring Controller拦截器配置 #### 一、概述 在Spring框架中,拦截器(Interceptor)是一种重要的机制,用于对Controller的请求进行预处理和后处理。它可以用来实现一系列的功能,如权限验证、日志记录、统一...

    spring MVC AOP注解方式如何拦截controller 例子

    本文将详细介绍如何使用AspectJ注解在Spring MVC中实现AOP拦截Controller方法,并提供一个具体的例子。 首先,我们需要了解Spring AOP的基础概念。AOP允许我们定义“切面”,这些切面包含了业务逻辑中横切关注点的...

    spring MVC(新增拦截器demo)

    在本次的“spring MVC(新增拦截器demo)”项目中,我们将重点探讨如何在Spring MVC中添加拦截器来实现对请求的预处理和后处理。 拦截器在Spring MVC中扮演着关键的角色,它们可以用来执行一些全局性的任务,如日志...

    类似Spring Controller 注解Demo

    本文将深入探讨"类似Spring Controller注解Demo"这一主题,结合提供的标签"源码"和"工具",我们将分析Spring MVC中的Controller注解以及如何通过源码理解和应用它们。 Spring MVC是Spring框架的一部分,它提供了...

    Spring拦截器,高级参数绑定

    Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对Controller方法调用的预处理和后处理。下面将详细探讨Spring拦截器的使用以及高级参数绑定和Controller返回值的相关知识。 首先,我们创建...

    springMVC AOP拦截拦截Controller等实现日志管理

    通过这种方式,我们可以在Spring MVC中利用AOP实现对Controller方法的透明日志管理,不仅记录正常流程,也能捕获和记录异常,提升系统的可维护性和问题排查效率。 在实际项目中,我们可以根据需求进一步定制日志...

    Spring MVC Controller配置方式

    在 Spring MVC 中,Controller 是处理用户请求的核心组件,负责接收请求、处理业务逻辑并返回响应。本文将详细介绍 Spring MVC 中 Controller 的配置方式。 一、注解式配置 1.1 @Controller 注解 @Controller 是 ...

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

    为了解决这一问题,可以利用Spring框架中的AOP(Aspect Oriented Programming,面向切面编程)技术来实现。 #### 二、Spring AOP 概述 Spring AOP 是Spring框架提供的一种实现AOP的方法。通过AOP,开发者可以在不...

    spring配置JSON拦截器VIEW

    标题中的“spring配置JSON拦截器VIEW”指的是在Spring框架中设置JSON数据的处理方式,特别是通过拦截器(Interceptor)来优化视图层(View)的响应。在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前...

    原生Servlet与Spring Controller性能比较--Controller项目

    在"Controller项目"中,我们可以通过编写基准测试(如使用JMeter或 Gatling)来具体比较原生Servlet和Spring Controller在处理相同请求时的性能。这有助于了解在特定场景下哪种方式更适合。 总的来说,原生Servlet...

    springboot spring aop 拦截器注解方式实现脱敏

    在Spring Boot应用中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们创建横切关注点,如日志记录、权限检查等,这些关注点可以被编织到应用程序的多个点上,而无需侵入核心业务逻辑。在本案例中,我们将...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...

    Spring MVC 拦截器

    Spring MVC的拦截器与Servlet的Filter有所不同,Filter是对所有请求进行拦截,而拦截器则可以更加精确地控制对哪些Controller或特定的处理方法进行拦截。HandlerInterceptorAdapter是Spring MVC提供的一般拦截器...

    springmvc(spring4版本)+自带登录和拦截器

    3. **@Controller**:在Spring MVC中,我们通过在类上添加@Controller注解来标识该类为一个控制器,处理来自客户端的请求。 4. **@RequestMapping**:这个注解用于映射URL到特定的方法,可以指定请求的HTTP方法...

    SpringBoot拦截器实现对404和500等错误的拦截

    如果你希望在拦截器中处理404错误,你可以在`preHandle`或`postHandle`方法中检查请求路径,如果找不到对应的Controller方法,可以手动设置响应状态码为404并返回自定义的错误信息。 对于500错误,SpringBoot同样...

    spring aop日志拦截

    在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现日志拦截,特别是对于controller层的操作。AOP允许我们定义横切关注点,这些关注点可以是如日志记录、事务管理、权限检查等通用功能,它们在程序...

    原生Servlet与Spring Controller性能比较--Servlet项目

    在Java Web开发中,Servlet和Spring MVC(主要通过Controller)是两种常见的请求处理机制。本文将深入探讨原生Servlet与Spring Controller在性能方面的差异,并基于一个名为"AbTest"的Servlet项目源码进行分析。 ...

Global site tag (gtag.js) - Google Analytics