SpringBoot配置外部Tomcat并打War包

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

【1】创建项目并打War包

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

7A4A2A88-3EC8-D896-1487-CD212367B181.jpeg


② 打包方式选择"war"

9F947CBD-0B56-6C2F-6CC7-A8C5FCF02377.jpeg


③ 选择添加的模块

3A1931E3-AC1D-366D-5620-D7BBE44695CE.jpeg


④ 创建的项目图示

C77B5E70-10E8-6ACD-F07A-AA47963A8246.jpeg

有三个地方需要注意:

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

ServletInitializer类如下:

public class ServletInitializer extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(SpringbootwebprojectApplication.class);
	}

}

pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.web</groupId>
	<artifactId>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>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</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>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--这里修改了内置Tomcat的作用域-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

⑤ 补全项目结构

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

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

1.如下图所示,点击项目结构图标

C8AA432C-9A1E-77F8-713E-E36515DB7461.jpeg

2.创建src/main/webapp

B084DC39-4BE0-F56A-A59F-6FCA07332A08.jpeg

3.创建web.xml

1439FD58-08F8-4ADC-EFE8-B867D2D1F5BE.jpeg

904149DA-1EB7-A3BF-F43F-A668FC68C7B5.jpeg


此时项目结构图如下:

43CCF6D6-58CC-8DBE-7C8C-663492A96984.jpeg


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

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

8562A095-A563-6E7F-663E-C6C4F0AB3584.jpeg


② 设置Tomcat、JDK和端口

CD1AB247-503F-9265-AD09-7EFCCE9BD607.jpeg


③ 部署项目

BC0C15CC-517E-4474-25C9-7646657A79D0.jpeg

E0FB6F84-01B5-4170-2F1C-37423CC1B095.jpeg


④ 启动项目

8BB427BC-81D6-5186-C382-648F4143FB98.jpeg


此时如果webapp 下有index.html,index.jsp,则会默认访问index.html。

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

index.html显示如下图:

5ED0A7AA-702C-CE34-DD5C-64894D7504C4.jpeg

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据