Spring 全家桶之 Spring Boot 2.6.4(八)- 嵌入式 Servlet 容器(Part B)
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第24天,点击查看活动详情。
三、使用其他Spring Boot内置的Servlet容器
Spring Boot除了支持内嵌的Tomcat Servlet容器,还支持Jetty和Undertow两种Servlet容器
Jetty基于Java语言编写的一个开源servlet容器,为Jsp和servlet提供了运行环境,可以迅速为一些独立运行的Java应用提供网络和web连接,Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。
Undertow是Red Hat公司的开源产品, 它完全采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。
使用Jetty Servlet容器
引入其他Servlet容器方式,首先排除默认的Tomcat,再引入其他的,使用exclusion标签来排除依赖,不需要添加版本号,再通过dependency标签引入需要的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--引入其他的Servlet容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
重新启动应用
控制台已经打印出Jetty已经启动,并且在8083端口启动,通过WebServerFactoryCustomizer做的配置依然有效
浏览器中访问已经注册的Servlet
自定义的Filter、Servlet、Listener依然有效
四、使用外置的Servlet容器
由于使用内置Servlet容器默认不支持JSP并且优化定制比较复杂,Spring Boot也支持使用外部的Servlet容器,在IDEA创建新的项目spring-boot-tomcat,打成war包形式
相比jar包形式多了一个类,但是该项目没有webapp目录和web.xml文件文件,通过查看项目结构Project Structure -> Modules
点击ok会自动创建webapp目录
点击+号在webapp目录下生成web.xml文件
webapp目录和web.xml生成之后,就可以整合本地Tomcat,点击Configuration,添加一个Local Tomcat Server
进入到Deployment,点击Fix,选择部署的war包
设置访问路径
点击apply之后启动tomcat
首页能正常显示,说明应用部署成功。在webapp目录下添加index.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>INDEX</title>
</head>
<body>
<h1>James, This is Vulture Team</h1>
</body>
</html>
重新启动应用
刚刚webapp目录下创建的index.jsp能够正常显示
新增CobraController
@Controller
public class CobraController {
@RequestMapping("/cobra")
public String cobra(Model model){
model.addAttribute("msg","Copy, This is Cobra Team!");
return "success";
}
}
在webapp下新建pages目录并增加success.jsp页面,在该页面中取出cobra()方法中保存的msg信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Sucess</title>
</head>
<body>
<h1>${msg}</h1>
</body>
</html>
index.jsp页面中的body标签下增加/cobra超链接
<h2><a href="/cobra">Call Cobra Team</a></h2>
Spring MVC配置文件中这样配置视图解析器
<!--配置试图解析器,自动拼接页面地址,自动在jsp页面前增加/WEB-INF/pages/-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
Spring Boot中在application.properties中配置视图解析器
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
重启应用并点击首页超链接
success页面中能成功取出msg信息
使用外置Tomcat步骤
将项目打包方式改为war
<packaging>war</packaging>
增加Tomcat依赖,scope为provided
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在主程序类同级目录下增加ServletInitializer类,用来启动主程序类
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(LilithApplication.class);
}
}
4. 配置Tomcat,启动应用即可
相关文章
- 面试突击84:Spring 有几种事务隔离级别?
- Spring Cloud版本冲突(java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper)
- JAVA乐观锁_spring的线程池配置
- 手把手教大家在 Spring Boot 中处理 flowable 中的用户和组!
- Spring-boot_Spring Boot
- Spring Boot Starters介绍[通俗易懂]
- springspring boot拷贝实体的工具类---BeanObjectCopyUtils
- Spring Boot 入门
- Spring Boot - ApplicationRunner && CommandLineRunner扩展接口
- Spring循环依赖-spring源码详解(四)
- R语言代做编程辅导M3S2 Spring - Assessed Coursework:linear model(附答案)
- spring boot 配置文件properties和YAML详解
- Spring Boot 3.x微服务升级经历
- 【SCT】Spring Cloud Starter Tencent Polaris Config
- Spring Boot的RESTful API开发(一)
- Spring Boot的安全配置(一)
- Spring Boot的性能优化(一)
- Mybatis是如何向Spring注册Mapper的?
- Spring Batch 核心概念ItemWriter
- 【愚公系列】2023年04月 Java教学课程 140-Spring MVC框架的拦截器
- BeanPostProcessor(Spring后置处理器)
- Java Spring 中你不知道的注入方式详解编程语言
- 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事详解大数据
- Spring的FactoryBean使用详解编程语言
- Spring Boot 单元测试详解+实战教程编程语言
- Spring Boot 配置随机数技巧详解编程语言
- Spring Boot(十三):spring boot小技巧详解编程语言
- spring boot 发邮件详解编程语言
- spring boot @RequestBody数据传递及解析详解编程语言
- spring使用Spring整合Redis和Jedis构建高性能应用(redisjedis与)