SpringBoot学习-Servlet容器配置修改

默认Servlet容器

SpringBoot默认使用Tomcat作为嵌入式的Servlet容器;

默认servlet

定制和修改Servlet容器的相关配置

修改和server有关的配置

方式一:

修改ServerProperties类中的属性,都是多服务器进行修改

1
2
3
4
5
@ConfigurationProperties(
prefix = "server",
ignoreUnknownFields = true
)
public class ServerProperties {

示例:

1
2
3
server.port=8081
server.servlet.context-path=/springboot
server.tomcat.uri-encoding=UTF-8

方式二:

编写一个WebServerFactoryCustomizer:web服务器的定制器;来修改Servlet容器的配置

1
2
3
4
5
6
7
8
9
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8081);
}
};
}

SpringBoot替换其他的Servlet容器

SpringBoot支持的三种Servlet容器

默认支持:Tomcat、Jetty(长连接,如web聊天..)、Undertow(不支持jsp,非阻塞,并发性能好)

Tomcat(默认使用)

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--引入web模块默认就是使用嵌入式的Tomcat作为Servlet容器;-->
</dependency>

Jetty

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 引入web模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>

<!--引入其他的Servlet容器-->
<dependency>
<artifactId>spring-boot-starter-jetty</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>

Undertow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 引入web模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>

<!--引入其他的Servlet容器-->
<dependency>
<artifactId>spring-boot-starter-undertow</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>

外置Servlet容器(jsp支持、war包)

外置的Servlet容器:外面安装Tomcat—应用war包的方式打包;

步骤

1)、必须创建一个war项目;(利用idea创建好目录结构)(快捷创建时2、3步会自动配置好)

创建一个SpringBoot项目

创建war项目

选择打包方式为war包

创建war项目

其他步骤照常

创建成功后的目录结构

目录结构

创建webapp目录(也可以将webapp目录改为其他名字)

创建目录

2)、将嵌入式的Tomcat指定为provided;

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

3)、必须编写一个SpringBootServletInitializer的子类,并调用configure方法

1
2
3
4
5
6
7
8
9
public class ServletInitializer extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
//传入SpringBoot应用的主程序
return application.sources(SpringBoot04WebJspApplication.class);
}

}

4)、配置tomcat服务器

配置tomcat服务器

配置tomcat服务器

5)、启动服务器就可以使用;

启动tomcat服务器

测试

JSP支持测试

1)、编写JSP页面(注意路径,必须在webapp目录(或者之前创建项目时自己改的)下)

jsp页面

2)、JSP页面访问: http://localhost:8181/springboot_web2_war_exploded/pages/success.jsp

结果

配置测试

1)、控制层

1
2
3
4
5
6
7
8
@Controller
public class HelloController {
@RequestMapping("/abc")
public String hello(Model model) {
model.addAttribute("msg", "你好");
return "success";
}
}

2)、配置文件application.properties设置

1
2
spring.mvc.view.prefix=/pages/
spring.mvc.view.suffix=.jsp

配置文件设置

3)、请求访问: http://localhost:8181/springboot_web2_war_exploded/abc

结果信息

打war包部署

在pom.xml文件的build中添加如下代码,将webapp添加到静态资源文件夹META-INF/resources下,将webapp中的内容打进war包,防止静态资源丢失

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
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- 添加这个就可以是webapp目录生效 -->
<resources>
<resource>
<directory>src/main/webapp</directory>
<!--注意此次必须要放在此目录下才能被访问到 -->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>

最后更新: 2020年07月30日 22:56

原始链接: http://ligangit.com/2020/07/30/SpringBoot学习-Servlet容器配置修改/

× 请我吃糖~
打赏二维码