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("清理---------------------");
    }
}

SpringMVC的异常处理

配置方式

注解方式

文件上传下载

posted @ 2021-11-23 16:06  amo丶k  阅读(35)  评论(0编辑  收藏  举报