文章目录* * [1.自定义拦截器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * * [1.基本介绍](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.说明](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.自定义拦截器的三个方法](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.流程图](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.快速入门](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.Myinterceptor01.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.FurnHandler.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.springDispatcherServlet-servlet.xml配置拦截器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.单元测试](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.拦截特定路径](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.拦截指定路径](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.通配符配置路径](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.细节说明](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [5.多个拦截器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.执行流程图](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.应用实例](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.FurnHandler.java目标方法](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.拦截器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.异常处理](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * * [1.基本介绍](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.局部异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.需求分析](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.抛出问题](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.MyExceptionHandler.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.不处理异常则交给tomcat处理](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.局部异常实例](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.MyExceptionHandler.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.exception_mes.jsp](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.全局异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [1.基本介绍](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.全局异常实例](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * * [1.MyGlobalException.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.global_exception.jsp](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.细节说明](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.局部异常优先级高于全局异常](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.处理异常机制](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.自定义异常](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.基本介绍](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.自定义异常应用实例](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.SelfException.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.selfex.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.可以使用有参构造,抛出异常交给异常处理器接管](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.SelfException.java](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.selfex.java抛出自定义异常并制定message](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.MyGlobalException.java捕获自定义异常](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [5.统一异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.基本介绍](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.需求分析](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.具体实现](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.MyExceptionHandler.java抛出数组越界异常](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.springDispatcherServlet-servlet.xml配置统一异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.arrEx.jsp异常处理页面](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [6.对未知异常进行统一处理](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.具体实现](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.MyExceptionHandler.java抛出异常](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.springDispatcherServlet-servlet.xml修改统一异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.allEx.jsp所有未知异常的处理](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.结果展示](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [7.异常处理的优先级](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * [1.局部异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.全局异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.统一异常处理器](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [4.Tomcat默认机制](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [3.springMVC阶段的配置文件](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * * * [1.springDispatcherServlet-servlet.xml](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“) * [2.web.xml](### 1.自定义拦截器##### 1.基本介绍###### 1.说明 ###### 2.自定义拦截器的三个方法 ###### 3.流程图 ##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { /* * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(“preHandle”); return true; } /* * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println(“postHandle”); } /* * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“afterCompletion”); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping(“/hi”) public String hi() { System.out.println(“hi方法被调用”); return “success”; } @RequestMapping(“/hello”) public String hello() { System.out.println(“hello方法被调用”); return “success”; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试 ##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h"/> <mvc:exclude-mapping path=“/hi”/> </mvc:interceptor> </mvc:interceptors> ##### 4.细节说明 ##### 5.多个拦截器###### 1.执行流程图 ###### 2.应用实例 ###### 1.FurnHandler.java目标方法 @RequestMapping(“/topic”) public String topic() { System.out.println(“topic执行!”); return “success”; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter(“topic”); if (topic.equals(“topic”)) { response.setContentType(“text/html;charset=utf-8”); response.getWriter().write(“)### 1.自定义拦截器##### 1.基本介绍###### 1.说明
###### 2.自定义拦截器的三个方法
###### 3.流程图
##### 2.快速入门###### 1.Myinterceptor01.java package com.sun.web.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 孙显圣 * @version 1.0 / @Component //注入容器 public class Myinterceptor01 implements HandlerInterceptor { / * * 在目标方法执行前被调用,如果返回false,目标方法不会被执行 * * @param request * @param response * @param handler * @return * @throws Exception / @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle"); return true; } / * * 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理 * * @param request * @param response * @param handler * @param modelAndView * @throws Exception / @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle"); } / * * 在渲染之后会被调用,可以进行资源清理工作 * * @param request * @param response * @param handler * @param ex * @throws Exception / @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion"); } } ###### 2.FurnHandler.java package com.sun.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; / * * @author 孙显圣 * @version 1.0 / @Controller public class FurnHandler { @RequestMapping("/hi") public String hi() { System.out.println("hi方法被调用"); return "success"; } @RequestMapping("/hello") public String hello() { System.out.println("hello方法被调用"); return "success"; } } ###### 3.springDispatcherServlet-servlet.xml配置拦截器 mvc:interceptors </mvc:interceptors> ###### 4.单元测试
##### 3.拦截特定路径###### 1.拦截指定路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/hi"/> </mvc:interceptor> </mvc:interceptors>
###### 2.通配符配置路径 mvc:interceptors mvc:interceptor <mvc:mapping path="/h "/> <mvc:exclude-mapping path="/hi"/> </mvc:interceptor> </mvc:interceptors>
##### 4.细节说明
##### 5.多个拦截器###### 1.执行流程图
###### 2.应用实例
###### 1.FurnHandler.java目标方法 @RequestMapping("/topic") public String topic() { System.out.println("topic执行!"); return "success"; } ###### 2.拦截器 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //只要参数中有topic是topic就直接响应 String topic = request.getParameter("topic"); if (topic.equals("topic")) { response.setContentType("text/html;charset=utf-8"); response.getWriter().write("
请不要乱说话!!
"); } //后面的不再执行 return false; } ###### 3.结果展示
### 2.异常处理##### 1.基本介绍
##### 2.局部异常处理器###### 1.需求分析
###### 2.抛出问题###### 1.MyExceptionHandler.java package com.sun.web.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; /** * @author 孙显圣 * @version 1.0 / @Controller public class MyExceptionHandler { @RequestMapping("/getNum/{num}") public String getNUm(@PathVariable("num") Integer num) { //这里如果传进来的是0则会出现异常 System.out.println(10 / num); return "success"; } } ###### 2.不处理异常则交给tomcat处理
###### 3.局部异常实例###### 1.MyExceptionHandler.java package com.sun.web.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; / * * @author 孙显圣 * @version 1.0 */ @Controller public class MyExceptionHandler { @RequestMapping("/getNum/{num}") public String getNUm(@PathVariable("num") Integer num) { //这里如果传进来的是0则会出现异常 System.out.println(10 / num); return "success"; } //处理异常 @ExceptionHandler({ArithmeticException.class, NullPointerException.class}) //参数是一个数组,可以接受多个异常类型 public String exceptionHandler(Exception ex, HttpServletRequest request) { //当出现异常时,异常会自动封装到ex中(数据绑定) System.out.println("异常的信息=" + ex.getMessage()); //可以将异常信息请求转发给下一个页面 request.setAttribute("reason", ex.getMessage()); return "exception_mes"; } } ###### 2.exception_mes.jsp <%-- Date: 2024/3/1 Time: 8:47 User: 孙显圣 Version:1.0 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
出现异常
异常信息是KaTeX parse error: Expected 'EOF', got '#' at position 57: ...</html> #̲##### 3.结果展示![i...{requestScope.reason}
3.结果展示
##### 3.细节说明###### 1.局部异常优先级高于全局异常###### 2.处理异常机制* 先从发生异常的方法所在的类中查找有 @ExceptionHandler 注解的方法,如果异常不匹配则进行下一步* 从有 @ControllerAdvice 注解的类查找有 @ExceptionHandler 注解的方法,如果匹配异常则处理,无法匹配则交给tomcat处理##### 4.自定义异常###### 1.基本介绍
###### 2.自定义异常应用实例###### 1.SelfException.java package com.sun.web.exception; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; /** * @author 孙显圣 * @version 1.0 / //reason指的是返回的异常原因信息,value指的是返回的响应状态 @ResponseStatus(reason = "年龄需要在1-120之间", value = HttpStatus.BAD_REQUEST) public class SelfException extends RuntimeException{ } ###### 2.selfex.java package com.sun.web.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; / * * @author 孙显圣 * @version 1.0 / @Controller public class selfex { @RequestMapping("/selfex") public void ex() { throw new SelfException(); } } ###### 3.结果展示
###### 3.可以使用有参构造,抛出异常交给异常处理器接管###### 1.SelfException.java package com.sun.web.exception; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; / * * @author 孙显圣 * @version 1.0 / //reason指的是返回的异常原因信息,value指的是返回的响应状态 @ResponseStatus(reason = "年龄需要在1-120之间", value = HttpStatus.BAD_REQUEST) //注意这个是给tomcat看的 public class SelfException extends RuntimeException{ public SelfException() { } //这样就可以从全局异常里获取message了 public SelfException(String message) { super(message); } } ###### 2.selfex.java抛出自定义异常并制定message package com.sun.web.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; / * * @author 孙显圣 * @version 1.0 / @Controller public class selfex { @RequestMapping("/selfex") public void ex() { throw new SelfException("年龄需要在1-100"); //指定message } } ###### 3.MyGlobalException.java捕获自定义异常 package com.sun.web.exception; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import javax.servlet.http.HttpServletRequest; / * * @author 孙显圣 * @version 1.0 / @ControllerAdvice //表示这个是处理全局异常的类 public class MyGlobalException { //处理自定义异常 @ExceptionHandler(SelfException.class) public String selfex(Exception ex, HttpServletRequest request) { //将全局异常信息请求转发 request.setAttribute("reason", ex.getMessage()); return "global_exception"; } } ###### 4.结果展示
##### 5.统一异常处理器###### 1.基本介绍
###### 2.需求分析
###### 3.具体实现###### 1.MyExceptionHandler.java抛出数组越界异常 package com.sun.web.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; / * * @author 孙显圣 * @version 1.0 */ @Controller public class MyExceptionHandler { //抛出数组越界异常,局部异常处理器和全局异常处理器都没有处理,则会交给统一异常处理器来处理 @RequestMapping("/arr") public String array() { int\[\] ints = {1, 2, 3}; System.out.println(ints1222); //交给统一异常处理器来处理 return "success"; } } ###### 2.springDispatcherServlet-servlet.xml配置统一异常处理器 arrEx ###### 3.arrEx.jsp异常处理页面 <%-- Date: 2024/3/1 Time: 10:02 User: 孙显圣 Version:1.0 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
数组越界异常
4.结果展示
##### 6.对未知异常进行统一处理###### 1.具体实现###### 1.MyExceptionHandler.java抛出异常 package com.sun.web.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /* * * @author 孙显圣 * @version 1.0 */ @Controller public class MyExceptionHandler { //没有归类的异常 @RequestMapping("/test") public String test() { String str = "hello"; char c = str.charAt(10); //这里会抛出异常 return "success"; } } ###### 2.springDispatcherServlet-servlet.xml修改统一异常处理器 arrEx allEx ###### 3.allEx.jsp所有未知异常的处理 <%-- Date: 2024/3/1 Time: 10:12 User: 孙显圣 Version:1.0 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
##### 7.异常处理的优先级###### 1.局部异常处理器* 方法上加@ExceptionHandler({ArithmeticException.class, NullPointerException.class}) //参数是一个数组,可以接受多个异常类型###### 2.全局异常处理器* 类上加@ControllerAdvice //表示这个是处理全局异常的类* 方法上加@ExceptionHandler({ArithmeticException.class, NullPointerException.class}) //参数是一个数组,可以接受多个异常类型###### 3.统一异常处理器* 匹配方式是匹配尽可能具体的类型,跟配置的顺序无关* 在Spring配置文件中配置 arrEx allEx ###### 4.Tomcat默认机制### 3.springMVC阶段的配置文件##### 1.springDispatcherServlet-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <context:component-scan base-package="