50.SpringBoot學習筆記--使用外部Servlet容器與JSP支持

嵌入式 Servlet 容器

應用打包成可執行的 jar 包。

  • 優點:簡單,便捷
  • 缺點:
    • 默認不支持 JSP
    • 優化定製比較複雜
      • 使用定製器【ServerProperties、自定義 EmbeddedServletContainerCustomizer】
      • 自己編寫嵌入式 Servlet 容器的創建工廠【EmbeddedServletContainerFactory】

外置 Servlet 容器

外部安裝 Tomcat — 應用以 war 包的方式打包。

創建項目

1、創建項目時,Packaging 選擇 War

在這裏插入圖片描述
2、按照下面圖片的方法,創建 webapp 文件夾

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述
3、按照下面圖片的方法,創建 web.xml。其中 web.xml 的創建路徑的示例如下:

D:\IdeaProjects\springboot\springboot-04-web-jsp\src\main\webapp\WEB-INF\web.xml

在這裏插入圖片描述

配置項目

1、Edit Configurations…

在這裏插入圖片描述
2、+ --> Tomcat Server – Local

在這裏插入圖片描述
3、按照下面圖片的方法,配置 Tomcat Home (配置好 Tomcat Home 後,Tomcat base directory 會自動填好)

在這裏插入圖片描述
4、Deployment --> + --> Artifact

在這裏插入圖片描述
5、選擇 exploded 版本

在這裏插入圖片描述
6、配置 Application context

在這裏插入圖片描述
7、選擇剛剛配置好的 tomcat8,啓動。

在這裏插入圖片描述

開發項目

src\main\webapp\hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>Hello JSP</h1>
    <a href="abc">abc</a>
</body>
</html>

src\main\webapp\WEB-INF\success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>SUCCESS</h1>
    <h3>${msg}</h3>
</body>
</html>

demo.yangxu.springboot.controller.HelloController

package demo.yangxu.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {
    
    @GetMapping("/abc")
    public String hello(Model model){
        model.addAttribute("msg","你好");
        return "success";
    }
}

application.properties

#指定視圖解析路徑前綴
spring.mvc.view.prefix=/WEB-INF/
#指定視圖解析後綴
spring.mvc.view.suffix=.jsp
#jsp修改不需要重啓
server.servlet.jsp.init-parameters.development=true

總結

1、創建一個 War 項目 (利用 IDEA 創建好目錄結構)

2、將嵌入式的 Tomcat 指定爲 provided (使用 Spring Initializr 會自動配置好)

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

3、編寫一個 SpringBootServletInitializer 的子類,並調用 configure 方法 (使用 Spring Initializr 會自動配置好)

package demo.yangxu.springboot;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        //傳入SpringBoot應用的主程序
        return application.sources(Springboot04WebJspApplication.class);
    }

}

4、啓動服務器就可以使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章