Interceptor 拦截器

Spring的Interceptor(拦截器)是Controller 方法级别的 当某一个Controller的方法进行request处理的时候 可以通过Interceptor进行拦截, 拦截器可以在方法执行之前, 方法执行完以后(返回ModelAndView) 以及执行完整个流程(直到渲染完View) 进行拦截

制作一个Interceptor需要实现org.springframework.web.servlet.HandlerInterceptor接口 他提供3个抽象方法 如下

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception:
执行Controllerf方法之前做处理 如果返回'true' 则继续执行, 如果返回'false' 则不再继续执行。handler为具体的Controller. 可以进行强制转换 如: WelcomeController controller = (WelcomeController) handler


public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception;
执行完Controllerf方法 并且返回ModelAndView(还未进行View的处理)


public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception;
整个操作流程执行完毕 包括渲染View


但是Spring已经提供了 org.springframework.web.servlet.handler.HandlerInterceptorAdapter抽象类来实现HandlerInterceptor接口 用来做适配器 我们只需要集成该适配器就可以了

public class WelcomeInterceptor extends HandlerInterceptorAdapter


Interceptor 需要配置在HandlerMapping上 该HandleMapping所映射的Controller全都会被该Interceptor拦截, 一个HandlerMapping可以配置多个Interceptor 做个HandlerMapping可以配置同一个Interceptor


示例:


<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="interceptors">
<list>
<ref bean="welcomeInterceptor"/>
</list>
</property>

<property name="mappings">
<props>
<prop key="/welcome">welcomeController</prop>
</props>
</property>

<property name="order" value="0"/>

</bean>

<bean id="welcomeController" class="me.iace.spring.controller.WelcomeController" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值