springboot2 部署在外部tomcat(过滤器Filter坑) 作者:马育民 • 2023-11-27 16:48 • 阅读:10063 # 部署在外部tomcat 需要改一些配置 ### 打成 war 包 ``` war ``` ### 移除嵌入tomcat ``` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat ``` ### 添加servlet api 包 不加此依赖,找不到 HttpSession 等类 ``` javax.servlet javax.servlet-api provided ``` ### 增加构建配置 要指定使用 `3.0` 以上版本,否则启动时因为没有 `web.xml` 报错 ``` org.apache.maven.plugins maven-war-plugin 3.0.0 test ``` # idea 配置 tomcat 由于没有嵌入式 tomcat ,所以启动时,需要配置 tomcat 不需要额外配置,就是正常配置tomcat,如下: [![](/upload/0/0/1IX6g0doxikv.jpg)](/upload/0/0/1IX6g0doxikv.jpg) # 静态文件 静态文件一般在 `static` 等目录中,不需要改动 和 配置 如果不能访问,可能是过滤器、拦截器导致的 # 过滤器 Filter 坑 在 java8 中,过滤器 Filter 不需要实现 `init()` 和 `destroy()` 方法,在这里是不行的,必须实现这两个方法,而且不能调用 接口中的方法,否则不生效 一般如下: ``` @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } ``` # 部署到tomcat 打包后,将 war 包 放到 tomcat `webapps` 目录下即可 # 其他注意事项 如果需要读取配置文件,一般需要改动 springboot jar 启动,配置文件在 jar中,或者在 jar同级目录中 tomcat war 启动,配置文件在 `WEB-INF\classes` 中,一般需要下面方式读取: ``` String path = this.getClass().getResource("/").getPath(); File dbFile = new File(path, Constant.DB_FILE_NAME); ``` 参考: https://blog.csdn.net/qq_44851613/article/details/116807810 原文出处:https://malaoshi.top/show_1IX6g0jnUCa5.html