运维开发网

用Java MVC实现自定义拦截器

运维开发网 https://www.qedev.com 2022-09-24 15:53 出处:网络
这篇文章主要为大家详细介绍了SpringMVC实现自定义拦截器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

这篇文章主要为大家详细介绍了SpringMVC实现自定义拦截器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助


SpringMVC实现自定义拦截器


1 拦截器(interceptor)的作用

Spring MVC的拦截器类似于Servlet开发中的过滤器,用于处理器的预处理和后处理。

拦截器按照一定的顺序连接成链,称为拦截链。当访问被拦截的方法或字段时,拦截器链中的拦截器将按照之前定义的顺序被调用。拦截器也是AOP的具体实现。


2 拦截器和过滤器区别

关于拦截器和过滤器的区别,如图:



3.实现过程

步骤分析:

1.创建拦截器类以实现HandlerInterceptor接口。

2.配置拦截器

3.测试拦截器的拦截效果。


3.1创建拦截器类实现HandlerInterceptor接口public class MyInterceptor implements HandlerInterceptor { /** * preHandle: 在目标方法执行之前 进行拦截 return false:不放行 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle1...."); return true; } /** * postHandle: 在目标方法执行之后,视图对象返回之前,执行的方法 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle1...."); } /** * afterCompletion:在流程都执行完成后,执行的方法 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion1...."); }}


3.2配置拦截器lt;!-- 配置拦截器--gt; lt;mvc:interceptorsgt; lt;mvc:interceptorgt; lt;!--对哪些资源执行拦截操作 path="/**"表示对controller层所有方法进行拦截 --gt; lt;mvc:mapping path="/**" /gt; lt;bean class="com.weihong.interceptor.MyInterceptor" /gt; lt;/mvc:interceptorgt; lt;/mvc:interceptorsgt;


3.3测试拦截器的拦截效果 @RequestMapping("/target") public String targetMethed(){ System.out.println("目标方法执行了"); return "interceptor"; }


3.4编写jsp页面lt;htmlgt;lt;headgt; lt;titlegt;Titlelt;/titlegt;lt;/headgt;lt;bodygt; lt;h3gt;success~~~~~~lt;/h3gt; lt;% System.out.println("视图执行了....");%gt;lt;/bodygt;lt;/htmlgt;


3.5测试结果



4. 拦截器链

中开发的拦截器可以单独使用,也可以同时使用多个拦截器组成一个拦截链。开发步骤与单个拦截器相同,只是注册时注册了多个拦截器。注意,这里的注册顺序代表拦截器执行的顺序。

同上,编写另一个MyHandlerInterceptor2操作来测试执行序列:

lt;!--配置拦截器--gt;lt;mvc:interceptorsgt; lt;mvc:interceptorgt; lt;!--拦截器路径配置--gt; lt;mvc:mapping path="/**"/gt; lt;!--自定义拦截器类--gt; lt;bean class="com.lagou.interceptor.MyInterceptor1"gt;lt;/beangt; lt;/mvc:interceptorgt; lt;mvc:interceptorgt; lt;!--拦截器路径配置--gt; lt;mvc:mapping path="/**"/gt; lt;!--自定义拦截器类--gt; lt;bean class="com.lagou.interceptor.MyInterceptor2"gt;lt;/beangt; lt;/mvc:interceptorgt;lt;/mvc:interceptorsgt;


5. 知识小结

拦截器中的方法描述如下:



总结

本文到此为止

0

精彩评论

暂无评论...
验证码 换一张
取 消