企业网站案列网站建设 海拉尔
web/
2025/10/3 3:49:05/
文章来源:
企业网站案列,网站建设 海拉尔,为什么做动漫短视频网站,泉州网站开发一、先来看一个需求
Spring MVC也可以使用拦截器对请求进行拦截处理#xff0c;用户可以自定义拦截器来实现特定的功能#xff0c;比如对临时文件的清除#xff0c;或者对某些ip地址进行拦截器. 二、springMVC自定义拦截器介绍
(1)需要实现一个接口 HandlerInterceptor. (…一、先来看一个需求
Spring MVC也可以使用拦截器对请求进行拦截处理用户可以自定义拦截器来实现特定的功能比如对临时文件的清除或者对某些ip地址进行拦截器. 二、springMVC自定义拦截器介绍
(1)需要实现一个接口 HandlerInterceptor. (2)有三个方法需要我们重写 preHandlerO.在目标方法执行之前被调用 postHandleO在目标方法执行后在被调用 afterCompletion0在所有的任务完毕后再调用比如页面渲染完毕后在调用.
三、入门示例
1、在springMVC的配置文件配置拦截器
!-- 配置拦截器--mvc:interceptorsref beanmyInterceptor//mvc:interceptors
2、 自定义一个拦截器实现接口HandlerInterceptor并重写这三个方法
//交给springMVC管理
Component
public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(preHandle....);return true;}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(postHandle....);}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(afterCompletion....);}
}
3、写一个测试handler
Controller
public class InterceptorTestHandler {RequestMapping(value /testInterceptor)public String testInterceptor() {System.out.println(调用了test方法);return success;}RequestMapping(value /testInterceptor2)public String testInterceptor2() {System.out.println(调用了test2方法);return success;}
}
4、写一个测试页面
body
h1test01/h1
a hreftestInterceptor测试拦截器01/ah1test02/h1
a hreftestInterceptor2测试拦截器02/a
/body
5、效果 可以看出拦截器方法的执行顺序 preHandler 目标方法postHandlerafterCompletion
四、拦截器的细节
1、如果preHandle方法_返回false,则不会再执行目标方法.实际上可以在此响应请求返回给页面 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(preHandle....);String mess 炸弹;if(mess.equals(炸弹)){request.getRequestDispatcher(/WEB-INF/pages/error.jsp).forward(request,response);return false;}else {return true;}}
2.说明postHandle 在目标方法被执行之后执行.可以在方法中访问到目标方法返回ModelAndView对象 例如可以改变这个MondelAndView的去向
在postHandle中做二次处理 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {modelAndView.getView();modelAndView.setView();System.out.println(postHandle....);}
3、若preHandle 返回true,则afterCompletion 方法在渲染视图之后被执行 若preHandle 返回false,则afterCompletion方法不会被调用
4、也可以在配置拦截器时指定该拦截器对某个请求生效其它请求不生效
mvc:mapping/mvc:mapping
!-- 配置拦截器--
!-- mvc:mapping/mvc:mapping 表示被配置的拦截器只对指定路径的目标方法有效--mvc:interceptorsmvc:interceptormvc:mapping path/testInterceptor2/ref beanmyInterceptor//mvc:interceptor/mvc:interceptors
5、排除掉某些请求mvc:exclude-mapping path/test/
6、多个拦截器时如何拦截器中的方法如何执行 简单案例
1、配置两个拦截器
!-- 配置拦截器--
!-- mvc:mapping/mvc:mapping 表示被配置的拦截器只对指定路径的目标方法有效--mvc:interceptorsref beanmyInterceptor/ //即示意图中的A拦截器ref beanmultiInterceptor/ //即示意图中的B拦截器/mvc:interceptors
2、复制刚刚案例的拦截器新建一个拦截器multiInterceptor将输出语句加多一个2(入门示例)
3、点击请求看控制台效果 7、多拦截器时 还需要注意
(1)如果在第一个拦截器的preXxx方法返回false , 后面的代码统统不执行了 2)如果在第二个拦截器的prexxx方法返回false则会执行前一个拦截器的aftefxxx方法再退出.
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86001.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!