`
seong
  • 浏览: 22734 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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" />
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics