SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat),该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂。故而我们可以使用习惯的外置Tomcat方式并将项目打War包。

【1】创建项目并打War包

① 同样使用Spring Initializer方式创建项目

SpringBoot - 项目打War包和外部Tomcat配置

② 打包方式选择”war”

SpringBoot - 项目打War包和外部Tomcat配置

③ 选择添加的模块

SpringBoot - 项目打War包和外部Tomcat配置

④ 创建的项目图示

SpringBoot - 项目打War包和外部Tomcat配置

有三个地方需要注意:

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

ServletInitializer类如下:

?

1

2

3

4

5

6

7

8

public class ServletInitializer extends SpringBootServletInitializer {

 

    @Override

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

        return application.sources(SpringbootwebprojectApplication.class);

    }

 

}

pom文件如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

<!--?xml version="1.0" encoding="UTF-8"?-->

<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelversion>4.0.0</modelversion>

 

    <groupid>com.web</groupid>

    springbootwebproject</artifactid>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>war</packaging>

 

    <name>springbootwebproject</name>

    <description>Demo project for Spring Boot</description>

 

    <parent>

        <groupid>org.springframework.boot</groupid>

        spring-boot-starter-parent</artifactid>

        <version>2.0.3.RELEASE</version>

        <relativepath> <!-- lookup parent from repository -->

    </relativepath></parent>

 

    <properties>

        <project.build.sourceencoding>UTF-8</project.build.sourceencoding>

        <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>

        <java.version>1.8</java.version>

    </properties>

 

    <dependencies>

        <dependency>

            <groupid>org.springframework.boot</groupid>

            spring-boot-starter-web</artifactid>

        </dependency>

        <!--这里修改了内置Tomcat的作用域-->

        <dependency>

            <groupid>org.springframework.boot</groupid>

            spring-boot-starter-tomcat</artifactid>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupid>org.springframework.boot</groupid>

            spring-boot-starter-test</artifactid>

            <scope>test</scope>

        </dependency>

    </dependencies>

 

    <build>

        <plugins>

            <plugin>

                <groupid>org.springframework.boot</groupid>

                spring-boot-maven-plugin</artifactid>

            </plugin>

        </plugins>

    </build>

 

 

</project>

⑤ 补全项目结构

第一种方式,手动创建src/main/webapp, WEB/INF以及web.xml。

第二种方式,使用idea创建,步骤如下:

第一步:如下图所示,点击项目结构图标

SpringBoot - 项目打War包和外部Tomcat配置

第二步:创建src/main/webapp

SpringBoot - 项目打War包和外部Tomcat配置

第三步:创建web.xml

SpringBoot - 项目打War包和外部Tomcat配置
SpringBoot - 项目打War包和外部Tomcat配置

此时项目结构图如下:

SpringBoot - 项目打War包和外部Tomcat配置

【2】使用外部配置的Tomcat启动项目

① 点击”Edit Configurations…”添加Tomcat。

SpringBoot - 项目打War包和外部Tomcat配置

② 设置Tomcat、JDK和端口

SpringBoot - 项目打War包和外部Tomcat配置

③ 部署项目

SpringBoot - 项目打War包和外部Tomcat配置
SpringBoot - 项目打War包和外部Tomcat配置

④ 启动项目

SpringBoot - 项目打War包和外部Tomcat配置

此时如果webapp 下有index.html,index.jsp,则会默认访问index.html。如果只有index.jsp,则会访问index.jsp;如果webapp下无index.html或index.jsp,则从静态资源文件夹寻找index.html;如果静态资源文件夹下找不到index.html且项目没有对”/”进行额外拦截处理,则将会返回默认错误页面。

index.html显示如下图:

SpringBoot - 项目打War包和外部Tomcat配置

 

相关文章: