Springboot使用外置的Servlet容器

devtools/2024/12/29 8:49:03/

嵌入式Servlet容器:应用打成可执行的jar

优点:简单、便携

缺点:默认不支持JSP、优化定制比较复杂

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

一.嵌入式tomcat启动项目步骤:

1.创建一个普通maven项目;(利用idea创建好目录结构)

可以创建一个普通的maven项目


 

2.将项目修改为springboot的项目结构

在pom文件中添加启动类依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency>
</dependencies>

编写启动类

@SpringBootApplication
public class SpringbootTomcatApplication {public static void main(String[] args) {org.springframework.boot.SpringApplication.run(SpringbootTomcatApplication.class, args);}
}

创建配置文件application.yml

配置端口号

server:port: 8085

3.创建templates目录,编写前端页面

在pom文件中导入templates视图引擎依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

编写前端页面

<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>success</h1>
</body>
</html>

4.创建controller层,编写controller代码

@Controller
@RequestMapping("/user")
public class SuccessController {@RequestMapping("/success")public String success(){System.out.println("1111111111111111111");return "success";}
}

在pom文件中导入web依赖,否则@RequestMapping注解无法识别

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

此时就可以成功启动了

注意,此时是内置的tomcat启动的

接下来演示如何修改使用外置tomcat启动项目:

二.外置tomcat启动项目:

1.必须创建一个war项目;(利用idea创建好目录结构)

 然后在pom文件中指定打包方式为war包

2.导入外部Tomcat依赖并指定为provided

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

3.修改项目结构

 

创建Webapp/WEB-INF/Pages/success.jsp前端页面

创建Webapp/WEB-INF/Web.xml配置文件

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>success</title>
</head>
<body>
<h1>外置tomcat的使用</h1>
</body>
</html>

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"></web-app>

修改项目结构

4.配置tomcat

 

5.必须编写一个SpringBootServletInitializer的子类,并调用configure方法

public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
//传入SpringBoot应用的主程序return application.sources(SpringBootApplication.class);}
}

编写controller层代码

在yml配置文件编写前缀后缀

spring:mvc:view:prefix: /WEB-INF/Pages/suffix: .jsp

这样就不会访问到你之前写的success.html页面了

而是访问刚刚写的success.jsp页面

此时启动就可以了

原理

jar包:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容器;

war包:启动服务器,服务器启动SpringBoot应用【SpringBootServletInitializer】,启动ioc容器;


http://www.ppmy.cn/devtools/146339.html

相关文章

Python 自动化 打开网站 填表登陆 例子

图样 简价&#xff1a; 简要说明这个程序的功能&#xff1a; 1. **基本功能**&#xff1a; - 自动打开网站 - 自动填写登录信息&#xff08;号、公司名称、密码&#xff09; - 显示半透明状态窗口实时提示操作进度 2. **操作流程**&#xff1a; - 打开网站后自动…

小程序基础 —— 02 微信小程序账号注册

微信小程序账号注册 小程序开发与网页开发不一样&#xff0c;在开始微信小程序开发之前&#xff0c;需要访问微信公众平台&#xff0c;注册一个微信小程序账号。 有了小程序的账号以后&#xff0c;才可以开发和管理小程序&#xff0c;后续需要通过该账号进行开发信息的设置、…

Linux-Ubuntu之串口通信

Linux-Ubuntu之串口通信 一&#xff0c;串口通信1.串口通信寄存器配置2.串口通信软件实现①手动波特率②自动波特率③主函数 二&#xff0c;printf和scanf实现串口的输入显示 一&#xff0c;串口通信 1.串口通信寄存器配置 串口通信利用接口是这个TTL&#xff0c;下载程序用的…

EKF 自动匹配维度 MATLAB代码

该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E

flink cdc使用flink sql方式运行一直报Make sure a planner module is on the classpath

flink cdc使用flink sql方式运行一直报Make sure a planner module is on the classpath 引入jar包信息&#xff1a; flink-connector-oracle-cdc:3.2.1 flink:1.20.0 flink-table-runtime:1.20.0 flink-streaming-java:1.20.0 flink-clients:1.20.0 Exception in thread &q…

MLLM学习过程

视频理解 SALOVA: Segment-Augmented Long Video Assistant for Targeted Retrieval and Routing in Long-Form Video Analysis 主要是用于增强对于长视频的理解。主要是讲视频进行剪切之后&#xff0c;首先判断每个剪切视频短对于文字的关联程度&#xff0c;并且将关联程度高…

探索寄存器读写函数:writeb, writew, writel 与 readb, readw, readl

本章目录 函数介绍读寄存器函数写寄存器函数 示例代码总结 在嵌入式系统开发中&#xff0c;与硬件直接交互是常见的需求。为了实现对硬件寄存器的读写操作&#xff0c;开发者通常会使用一些特定的函数。这些函数允许我们以字节、半字&#xff08;2字节&#xff09;或字&#xf…

WebClient HTTP 请求问题处理模板(泛型响应、忽略 SSL 证书等)

一、请求大数据 1、问题案例 &#xff08;1&#xff09;Server 该接口返回一段大小为 1MB 的字符串 GetMapping(“/testBigData”) public String testBigData() { int targetSize 1024 * 1024; // 1MB StringBuilder sb new StringBuilder(targetSize); for (int i 0; i …