目录
1、创建实现类实现HandlerInterceptor 接口
一、拦截器
拦截器(Interceptor )是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行
作用:
在指定的方法调用前后执行预先设定的代码
阻止原始方法的执行
示例:
1、创建实现类实现HandlerInterceptor 接口
  
   - 
    
     
    
    
     
      public 
      class SysIntercerptor implements HandlerInterceptor {
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
       @
      Override
     
    
- 
    
     
    
    
     
       public 
      boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
      Object handler) throws 
      Exception {
     
    
- 
    
     
    
    
     
         HttpSession session 
      = request.getSession();
     
    
- 
    
     
    
    
     
         
      /
      /判断用户是否登录
     
    
- 
    
     
    
    
     
         User user 
      = (User) session.getAttribute(Constants.USER_SESSION);
     
    
- 
    
     
    
    
     
         
      if (user 
      =
      = 
      null){
     
    
- 
    
     
    
    
     
             System.out.println(
      "用户未登录");
     
    
- 
    
     
    
    
     
             
      String path 
      = request.getContextPath() 
      + 
      "/";
     
    
- 
    
     
    
    
     
             response.sendRedirect(path);
     
    
- 
    
     
    
    
     
             
      return 
      false;
     
    
- 
    
     
    
    
     
         }
     
    
- 
    
     
    
    
     
         
      return 
      true;
     
    
- 
    
     
    
    
     
       }
     
    
- 
    
     
    
    
     
      }
     
    
 2、注册拦截器对象
  
   - 
    
     
    
    
     
      @
      Configuration
     
    
- 
    
     
    
    
     
      public 
      class SmbmsInterceptorConfig implements WebMvcConfigurer {
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
       @
      Override
     
    
- 
    
     
    
    
     
       public void addInterceptors(InterceptorRegistry registry) {
     
    
- 
    
     
    
    
     
         
      /
      /拦截的路径表达式
     
    
- 
    
     
    
    
     
         
      String[] path 
      = {
      "/sys/**",
      "/provider/**"};
     
    
- 
    
     
    
    
     
         
      /
      /不拦截的路径表达式
     
    
- 
    
     
    
    
     
         
      String[] excludePath 
      = {
      "/sys/add.do"};
     
    
- 
    
     
    
    
     
         
      /
      /放行
     
    
- 
    
     
    
    
     
         registry.addInterceptor(new SysIntercerptor()).addPathPatterns(path).excludePathPatterns(excludePath);
     
    
- 
    
     
    
    
     
       }
     
    
- 
    
     
    
    
     
      }
     
    
二、过滤器
定义一个过滤器类Filter,在类的上方使用 @WebFilter指定过滤路径和@Component注解即可
注意:若创建的过滤器类不在启动类所在的包下面,则需要在启动类上面增加注解
@ServletComponentScan(basePackages=过滤器类所在包路径)
示例:
  
   - 
    
     
    
    
     
      @Component
     
    
- 
    
     
    
    
     
      @WebFilter(
      value 
      = {
      "/sys/**",
      "/provider/**"})
      /
      /过滤请求路径
     
    
- 
    
     
    
    
     
      public 
      class SmbmsFilter implements Filter {
     
    
- 
    
     
    
    
     
       @
      Override
     
    
- 
    
     
    
    
     
       public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
     
    
- 
    
     
    
    
     
         HttpServletRequest request 
      = (HttpServletRequest) servletRequest;
     
    
- 
    
     
    
    
     
         
      /
      /获取请求参数
     
    
- 
    
     
    
    
     
         Map
      <
      String,
      String[]
      > stringMap 
      = request.getParameterMap();
     
    
- 
    
     
    
    
     
         
      /
      /遍历请求方式
     
    
- 
    
     
    
    
     
         
      if (stringMap !
      = 
      null){
     
    
- 
    
     
    
    
     
             stringMap.forEach((k,v) -
      >{
     
    
- 
    
     
    
    
     
                 System.out.println(k);
     
    
- 
    
     
    
    
     
                 
      if (v !
      = 
      null){
     
    
- 
    
     
    
    
     
                     
      for (
      String s : v) {
     
    
- 
    
     
    
    
     
                         System.out.println(s);
     
    
- 
    
     
    
    
     
                     }
     
    
- 
    
     
    
    
     
                 }
     
    
- 
    
     
    
    
     
             });
     
    
- 
    
     
    
    
     
         }
     
    
- 
    
     
    
    
     
         
      /
      /放行
     
    
- 
    
     
    
    
     
         filterChain.doFilter(servletRequest,servletResponse);
     
    
- 
    
     
    
    
     
       }
     
    
- 
    
     
    
    
     
      }
     
    
 拦截器与过滤器区别
归属不同:Filter属于Servlet技术,Interceptor属于SpringMVc技术
拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强
三、打包运行windows版(jar包,war包)
1、打包为jar包
1、springboot默认打包为jar包,点击package

2、 找到打包好的文件,在搜索框输入cmd

3、 输入java -jar 文件名称
结束运行:ctrl+c
2、打包为 war包
1、主启动类继承 SpringBootServletInitializer
示例:
  
   - 
    
     
    
    
     
      public 
      class SpringBootSmbmsApplication extends SpringBootServletInitializer {
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          public static void main(
      String[] args) {
     
    
- 
    
     
    
    
             
      SpringApplication.run(
      SpringBootSmbmsApplication.
      class, args);
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      }
     
    
继承 SpringBootServletInitializer 可以使用外部 tomcat。
SpringBootServletInitializer 就是原有的 web.xml 文件的替代。使用了嵌入式 Servlet,默认是不支
持 jsp。
2、修改pom文件中的packaging标签为:<packaging>war</packaging>
properties标签中配置跳过测试
<skipTests>true</skipTests>
3、打包

找到打包好的war包放入本地tomcat中webapp包中,找到tomcat的bin目录,点击startup.bat运行

转载:https://blog.csdn.net/qi341500/article/details/128921355
 
					