嵌入式 & 外置 Servlet 容器的优缺点;

嵌入式 Servlet 容器:
优点:简单,便携;
缺点:默认不支持 JSP、优化定制复杂(使用定制器【ServerProperties,自定义定制器EmbeddedServletContainerCustomizer】,自己编写嵌入式容器创建工厂【EmbeddedServletContainerFactory】)

外置 Servlet 容器:在外面安装 Tomcat 程序 – 应用war

【1】创建项目并打War包

使用Spring Initializer方式创建项目, **Packaging 选择 War**

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

有三个地方需要注意:
  
  pom中打包方式已经为war;
  对比默认为jar的项目多了ServletInitializer类;
  项目结构没有src/main/webapp,且没有WEB/INF web.xml。

补全项目结构
Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

生成 web.xml 文件
Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

【2】IDEA 整合 外部配置的Tomcat启动项目
Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

启动服务
Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

创建 JSP

<h1>Hello Spring Boot JSP</h1>

重新启动服务器:http://localhost:8080/hello.jsp
Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

hello.jsp 发送请求来到 /WEB-INF/success.jsp

hello.jsp

<h1>Hello Spring Boot JSP</h1>

 <a href="hello">abc</a>

HelloController

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model){
        model.addAttribute("msg","你好 Spring Boot");
        return "success";
    }

}

success.jsp

<h1>SUCCESS</h1>
<h1>${msg}</h1>

Spring Boot 使用外置的 Servlet 容器 -- 项目打War包和外部Tomcat配置与项目启动-LMLPHP

10-03 17:35