SpringMVC多个拦截器方法的执行顺序

 时间:2024-10-20 00:52:08

1、在我们程序中定下如下两个拦截器:<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/springmvc/helloworld"></mvc:mapping> <bean class="com.gwolf.springmvc.interceptors.SecondInterceptor"></bean> </mvc:interceptor> <bean class="com.gwolf.springmvc.interceptors.FirstInterceptor"></bean> </mvc:interceptors>

SpringMVC多个拦截器方法的执行顺序

2、声明第一个拦截器:package com.gwolf.springmvc.interceptors;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class FirstInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("FirstInterceptor preHandle--------"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("FirstInterceptor postHandle--------"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("FirstInterceptor afterCompletion-------------"); }}

SpringMVC多个拦截器方法的执行顺序

3、声明第二个拦截器SecondInterceptor:package com.gwolf.springmvc.足毂忍珩interceptors;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class SecondInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("SecondInterceptor preHandle--------"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("SecondInterceptor postHandle--------"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("SecondInterceptor afterCompletion-------------"); }}

SpringMVC多个拦截器方法的执行顺序

4、声明一个springmvc控制层:package com.gwolf.springmvc.handlers;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import com.gwolf.springmvc.domain.Person;@Controller@RequestMapping("/springmvc")public class HelloWorldController { /** *使用@RequestMapping 注解来映射请求的URL * *返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver *视图解析器,会做如下的解析:通过prefix+returnVal+后缀 这样的方式得到实际的物理视图,然后 *做转发操作。 * /WEB-INF/views/success.jsp * @return */ @RequestMapping(value="/helloworld/{id}",method=RequestMethod.GET) public String hello(@PathVariable Integer id) { System.out.println("test rest get:" + id); return "success"; } @RequestMapping(value="/helloworld",method=RequestMethod.POST) public String hello(Person person) { System.out.println(person); return "success"; } @RequestMapping(value="/helloworld/{id}",method=RequestMethod.DELETE) public String helloDelete(@PathVariable Integer id) { System.out.println("test rest delete:" + id); return "success"; } @RequestMapping(value="/helloworld/{id}",method=RequestMethod.PUT) public String helloPUt(@PathVariable Integer id) { System.out.println("test rest put:" + id); return "success"; }}

SpringMVC多个拦截器方法的执行顺序

5、执行任意一个jsp页面,查看程序的执行结果:

SpringMVC多个拦截器方法的执行顺序

6、当有多个拦截器时,我们查看这些拦截器的执行顺序,拦截器会根据配置的顺序首先执行preHandle的方法:

SpringMVC多个拦截器方法的执行顺序
SpringMVC多个拦截器方法的执行顺序
  • soapUI Error Unauthorized 测试SOAP接口未授权
  • 【Codesys视频教程】让第一个程序“运行”起来
  • 以太网转can网关- 调试软件的使用说明
  • 新国标(GB36246-2018)在招投标中的运用
  • 小米11ultra怎么开启反向充电
  • 热门搜索
    关于校车的手抄报 六一儿童节手抄报内容资料 关于祖国在我心中的手抄报 庆国庆迎中秋手抄报 历史手抄报资料 诚信手抄报资料 五水共治手抄报图画 手抄报版面设计图花 我是文明小学生手抄报 应急避险手抄报