spring boot中开发拦截器以及war包部署

1、拦截器  

   类似与javaweb filter   但是不是filter

2、拦截器特点

  1、请求到达会经过拦截器,响应回来同样会经过拦截器

  2、拦截器只能拦截控制器相关请求不能拦截jsp的请求

  3、拦截器可以中断用户请求轨迹

3、拦截作用

    作用:将多个控制器中共有代码放入拦截器中执行从而减少控制器代码冗余

4、springmvc开发拦截器

  a.类implement HandlerInterceptor{}

  b.配置拦截器 并配置拦截器拦截的请求路径

        

5、springboot中如何开发拦截器

  1.类 implement HandlerInterceptor{}

  2、配置拦截器  必须使用注解的方式

@Component
public class InterceptorConfig implements WebMvcConfigurer {

    @Autowired
    private  MyInterceptor myInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/file/**").excludePathPatterns("/file/upload");
        //add是通过拦截器,exclude是排除在拦截器外
    }
}

上面是config里面得内容

public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        System.out.println("========1=========");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        System.out.println("========3=========");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

        System.out.println("=========4=========");
    }
}

上面是MyInterceptor里面得内容

 上面是

 文件结构

 

————————————————————————————————————————分割线————————————————————————

springboot中war包部署

  1.将springboot应用中pom.xml中打包方式设置为

 <groupId>com</groupId>
    <artifactId>chinaunicom</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>chinaunicom</name>
    <packaging>war</packaging>
    <description>Demo project for Spring Boot</description>

  2.在springboot应用中引入官方插件

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
<!--                使用热部署出现中文乱码解决方案-->
                <configuration>
                    <fork>true</fork>
<!--                    增加jvm参数-->
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<!--                    指定入口类-->
                    <mainClass>com.chinaunicom.ChinaunicomApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

  3.排除内嵌得tomcat

  <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>8.5.20</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
 <scope>provided</scope>

标红得表示只在当前环境用,达成war包不用这俩个

 

  4.配置入口类

    继承SpringBootServletInitializer

    覆盖configure方法

@SpringBootApplication
public class ChinaunicomApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(ChinaunicomApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        //指定入口类类对象即可
        return builder.sources(ChinaunicomApplication.class);
    }
}

   5.打包文件

如果想跳过test这个就

 

 去target里面找打得包

 

 放到外部tomcat里面

 

posted @ 2020-08-20 11:40  一个想飞的菜鸟  阅读(457)  评论(0)    收藏  举报