由于公司一贯的方式都是将war包布在中间件tomcat下运行
所以这次springboot项目需要打war包
how to?
第一步:pom.xml 文件中,打包方式需要修改成war
<packaging>war</packaging>
第二步:pom.xml 文件中,spring-boot-starter-web下需要移除自带的tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency> 第三步:修改启动类,继承SpringBootServletInitializer
@SpringBootApplication
@EnableScheduling public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(Application.class);
}
}
第四步:pom.xml 中添加依赖,否则报错
cannot access javax.servlet.ServletException
[ERROR] class file for javax.servlet.ServletException not found
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
遇到的问题: 1. lomkor 日志文件依赖的jar包,下载不了,我这边将日志部分删除了 2. nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager
springboot 2.*的版本支持jdk1.8+, tomcat 最好是8.+。 我这边用的是7.0.42,所以需要将jar包 C:\Program Files\JetBrains\IntelliJ IDEA 2018.1.5\lib中的el-api.jar包复制到tomcat的lib下
重启tomcat 生效 3. 打开页面,能打开了,但是发现一个问题,页面跳转的时候,有时候能将war包名字带着,有时候不能
点击新增按钮
新增之后点击确认增加
url中少了war包名称uuu
还有一个报错,却不影响执行
nested exception is javax.validation.ValidationException: HV000183: Unable to initialize 'javax.el.E
pom.xml 中没有引入对应的jar依赖
我引入一下,重现打包,部署后发现错误still exists
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency> 后来还发现,中文乱码问题
路径跳转问题,将action 修改成为 th:action = "@{/xxx}"
乱码的问题: 后来将数据库加密,去除之后,乱码问题也解决了