飞道的博客

SpringBoot:拦截器,过滤器,打包与运行

311人阅读  评论(0)

目录

一、拦截器

1、创建实现类实现HandlerInterceptor 接口

2、注册拦截器对象

二、过滤器

拦截器与过滤器区别

三、打包运行windows版(jar包,war包)

1、打包为jar包

2、打包为 war包


一、拦截器

拦截器(Interceptor )是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行

作用:

在指定的方法调用前后执行预先设定的代码

阻止原始方法的执行

示例:

1、创建实现类实现HandlerInterceptor 接口


  
  1. public class SysIntercerptor implements HandlerInterceptor {
  2. @ Override
  3. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  4. HttpSession session = request.getSession();
  5. / /判断用户是否登录
  6. User user = (User) session.getAttribute(Constants.USER_SESSION);
  7. if (user = = null){
  8. System.out.println( "用户未登录");
  9. String path = request.getContextPath() + "/";
  10. response.sendRedirect(path);
  11. return false;
  12. }
  13. return true;
  14. }
  15. }

2、注册拦截器对象


  
  1. @ Configuration
  2. public class SmbmsInterceptorConfig implements WebMvcConfigurer {
  3. @ Override
  4. public void addInterceptors(InterceptorRegistry registry) {
  5. / /拦截的路径表达式
  6. String[] path = { "/sys/**", "/provider/**"};
  7. / /不拦截的路径表达式
  8. String[] excludePath = { "/sys/add.do"};
  9. / /放行
  10. registry.addInterceptor(new SysIntercerptor()).addPathPatterns(path).excludePathPatterns(excludePath);
  11. }
  12. }

二、过滤器

定义一个过滤器类Filter,在类的上方使用 @WebFilter指定过滤路径和@Component注解即可

注意:若创建的过滤器类不在启动类所在的包下面,则需要在启动类上面增加注解

@ServletComponentScan(basePackages=过滤器类所在包路径)

示例:


  
  1. @Component
  2. @WebFilter( value = { "/sys/**", "/provider/**"}) / /过滤请求路径
  3. public class SmbmsFilter implements Filter {
  4. @ Override
  5. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  6. HttpServletRequest request = (HttpServletRequest) servletRequest;
  7. / /获取请求参数
  8. Map < String, String[] > stringMap = request.getParameterMap();
  9. / /遍历请求方式
  10. if (stringMap ! = null){
  11. stringMap.forEach((k,v) - >{
  12. System.out.println(k);
  13. if (v ! = null){
  14. for ( String s : v) {
  15. System.out.println(s);
  16. }
  17. }
  18. });
  19. }
  20. / /放行
  21. filterChain.doFilter(servletRequest,servletResponse);
  22. }
  23. }

拦截器与过滤器区别

归属不同: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

示例:


  
  1. public class SpringBootSmbmsApplication extends SpringBootServletInitializer {
  2. public static void main( String[] args) {
  3. SpringApplication.run( SpringBootSmbmsApplication. class, args);
  4. }
  5. }

继承 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场