简述SpringMvc怎么配置拦截器?

在Spring MVC中,拦截器(Interceptor)用于在请求处理之前或之后执行特定的操作,如日志记录、权限检查、性能监控等。要配置Spring MVC拦截器,你需要执行以下步骤:

  1. 创建拦截器类
    首先,你需要创建一个实现了HandlerInterceptor接口的拦截器类。这个接口包含了三个方法:preHandlepostHandleafterCompletion,分别在请求处理之前、请求处理之后(但在视图渲染之前)和请求完全处理完毕(包括视图渲染)之后被调用。

    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MyInterceptor implements HandlerInterceptor {
    
       @Override
       public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
           // 在请求处理之前执行的操作
           // 如果返回false,则请求中断,不会继续执行后续操作
           return true;
       }
    
       @Override
       public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
           // 在请求处理之后,视图渲染之前执行的操作
       }
    
       @Override
       public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
           // 在请求完全处理完毕(包括视图渲染)之后执行的操作
       }
    }
    
  2. 配置拦截器
    接下来,你需要在Spring MVC的配置文件中注册你的拦截器。如果你使用的是Java配置,则可以通过继承WebMvcConfigurer接口并重写addInterceptors方法来实现。如果你使用的是XML配置,则可以在<mvc:interceptors>标签内部配置你的拦截器。

    Java配置示例

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    
       @Override
       public void addInterceptors(InterceptorRegistry registry) {
           registry.addInterceptor(new MyInterceptor())
                   .addPathPatterns("/**") // 拦截所有请求
                   .excludePathPatterns("/login", "/error"); // 排除登录和错误页面
       }
    }
    

    XML配置示例

    <mvc:interceptors>
       <bean class="com.example.MyInterceptor"/>
       <mvc:interceptor>
           <mvc:mapping path="/**"/>
           <mvc:exclude-mapping path="/login"/>
           <mvc:exclude-mapping path="/error"/>
           <bean class="com.example.AnotherInterceptor"/>
       </mvc:interceptor>
    </mvc:interceptors>
    

    在XML配置中,你可以使用<mvc:interceptor>标签为每个拦截器定义不同的路径模式和排除模式。每个<mvc:interceptor>内部可以有一个<bean>来指定拦截器类。

  3. 启动应用
    最后,启动你的Spring MVC应用。现在,每当有请求匹配到你配置的路径模式时,你的拦截器就会被触发,并按照你在拦截器类中定义的逻辑执行操作。

发表评论

后才能评论