4.20 使用外置的Servlet容器
1.嵌入式Servlet容器:应用打成可执行的jar
优点:简单、便携;
缺点:默认不支持JSP、优化定制比较复杂(使用定制器【ServerProperties、自定义EmbeddedServletContainerCustomizer】,自己编写嵌入式Servlet容器的创建工厂【EmbeddedServletContainerFactory】);
2.外置的Servlet容器:外面安装Tomcat---应用war包的方式打包;
3.配置外部servlet步骤:
1)、必须创建一个war项目;(利用idea创建好目录结构)
2)、将嵌入式的Tomcat指定为provided;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3)、必须编写一个SpringBootServletInitializer的子类,并调用configure方法
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
//传入SpringBoot应用的主程序
return application.sources(SpringBoot04WebJspApplication.class);
}
}
4)、启动服务器就可以使用;
4.实践
新建项目结构:
配置tomcat:
5.错误解决方法:
5.1 控制台乱码
打开idea的安装路径,进入bin目录
用文本文件打开idea64.exe.vmoptions(如果安装的是32位系统选择idea.exe.vmoptions)
在最下面一行添加-Dfile.encoding=UTF-8
最后关闭idea然后重新启动即可
5.2 tomcat启动报错”java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleExcepti“
是jdk和tomcat的版本不一致导致,使用tomcat8即可