SpringMVC入门
SpringMVC响应浏览器数据
乱码问题
RestFul风格
转发和重定向
SpringMVC处理json
拦截器
1、概述
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于拦截控制器方法的执行,用于对控制器进行预处理和后处理,开发者可以自己定义一些拦截器来实现特定的功能。
过滤器与拦截器的区别:拦截器是AOP思想的具体应用
过滤器:
- servlet规范中的一部分,任何javaweb工程都可以使用
- 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
拦截器: - 拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
- 拦截器只会拦截访问的控制器方法,如果访问的是jsp/html/css/image/js是不会进行拦截的
2、自定义拦截器
2.1 在SpringMVC配置文件中配置拦截器
<!--配置拦截器-->
<mvc:interceptors>
<!--以下两种配置方式都是对DispatcherServlet所有请求进行拦截-->
<bean class="com.kw.mvc.interceptor.MyInterceptor"></bean>
<ref bean="MyInterceptor"></ref>
<!--以下配置方式可以通过ref或bean标签设置拦截器,通过mvc:mapping设置需要拦截的请求,通过
mvc:exclude-mapping设置需要排除的请求,即不需要拦截的请求-->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/"/>
<bean class="com.kw.mvc.interceptor.MyInterceptor"/>
<ref bean="MyInterceptor"></ref>
</mvc:interceptor>
</mvc:interceptors>
2.2 新建一个拦截器,实现HandlerInterceptor接口,或继承HandlerInterceptorAdapter类
@RestController
public class MyInterceptor implements HandlerInterceptor {
//在请求处理的方法前执行
//如果返回true执行下一个拦截器
//如果返回false就不执行下一个拦截器
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("处理前---------------------");
return true;
}
//在请求处理方法执行之后执行
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("处理后---------------------");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("清理---------------------");
}
}