目录

创建 Spring Boot 2.0.3  web 应用

外置 Tomcat 服务器设置与部署

Spring MVC 流程开发测试

视图前后缀配置

外置 Tomcat 服务器启动原理


1、嵌入式 Servlet 容器的应用打成为可执行的 jar、war 包,优点是 简单、便携;缺点是 不支持 JSP、优化定制比较复杂(使用定制器、全局配置文件修改)

2、Spring Boot 提供程序员可以使用外置的 Servlet 容器,本文以外置的 Tomcat 服务器为例,此时应用要打包成为 war 包。

简而言之,大概流程如下:

1)先创建一个 war 包项目,利用 idea 创建好目录结构
2)将嵌入式的 Tomcat 指定为 provided,表明 dependency 由 JDK 或者容器提供;
3)必须编写一个 SpringBootServletInitializer 的子类,并调用 configure 方法

创建 Spring Boot 2.0.3  web 应用

1、新建项目,仍然使用 IDEA 的 Spring Initializr 初始化器快速创建项目。

2、外置 Tomcat 服务器时,打包类型选择 war 包。勾选 web 组件。

3、应用默认pom. xml 文件内容(注意 tomcat 组件的 scope 为 provided):

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.wmx</groupId><artifactId>tiger2</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>tiger2</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- scope=provided 表明 dependency 由 JDK 或者容器提供--><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>

4、应用默认生成的 ServletInitializer.java 内容:

4.1、相比于嵌入式的 Servlet 容器项目,外置容器时会多一个 ServletInitializer.java 文件,作用是用于初始化 Servlet。

4.2、如果以后需要将一个嵌入式 Servlet 容器的 Spring Boot 项目直接转为外置的 Tomcat 服务器时,也需要手写此文件。

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/*** 自定义类继承 SpringBootServletInitializer,自定义类名字可以自己随便取* 作用是应用启动时,会自动执行 configure 方法,从而初始化 Spring Boot的 Servlet** @author wangmaoxiong*/
public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {//传入SpringBoot应用的主程序return application.sources(Tiger2Application.class);}
}

外置 Tomcat 服务器设置与部署

1、创建 web.xml:从上面的默认结构中可以看到 “ src/main” 下面还有 webapp/WEB-INF/web.xml 没有自动生成,可以自己手动创建 web.xml,也可以点击工具栏的 "Project Structure" 按钮进行项目构建。

2、index.jsp:同理也可以手动创建一个 index.jsp 页面作为项目的默认首页。

3、项目部署(Artifacts):设置 xx:war exploded(解压的 war)的输出目录为本地的 tomcat 服务器下的 webapps 目录下。

4、Run/Debug Configurations:运行/调试配置,因为是外置 Tomcat 服务器部署,所以不再直接运行 @SpringBootApplication 注解的启动类,而是运行本地的 Tomcat 服务器。

4.1、因为动图超过大小限制,上传在了 github:https://github.com/wangmaoxiong/MyDocument/blob/master/images/runConfigruature.gif

4.2、可以看到运行成功,且 war 包解压在本地 Tomcat 的 webapps 目录下,将来部署时直接拷贝即可。

Spring MVC 流程开发测试

1、这里不操作数据库,只做简单的浏览器访问控制层,然后返回到指定 jsp 页面。

2、HelloController 控制层代码:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;import java.util.UUID;
/*** @author wangmaoxiong*/
@Controller
public class HelloController {/*** http://localhost:8080/hello/world?message=蚩尤后裔** @param message :接收页面参数* @param model   :往页面返回参数* @return*/@GetMapping("hello/world")public String world(@RequestParam String message, Model model) {//设置返回参数model.addAttribute("message", message);model.addAttribute("token", UUID.randomUUID().toString());//跳转到 jsp 页面return "/WEB-INF/pages/hello/world.jsp";}
}

3、world. jsp 内容:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>你好!世界。</title>
</head>
<body>
<h3>你好!世界。Hello World</h3>
<p>message=${message}</p>
<p>token=${token}</p>
</body>
</html>

视图前后缀配置

1、如同以前开发 Spring MVC 项目时,可以在 springMVC.xml 中配置内部资源视图解析器的前后缀规则一样,Spring Boot 也可以在全局配置中进行配置。

2、官方文档参考:https://docs.spring.io/spring-boot/docs/2.0.4.RELEASE/reference/htmlsingle/#common-application-properties

#设置后台访问 jsp 视图路径前缀
spring.mvc.view.prefix=/WEB-INF/pages/
#设置后台访问 jsp 视图路径后缀
spring.mvc.view.suffix=.jsp

3、此时后台访问视图层时,可以不再写路径前后缀。

外置 Tomcat 服务器启动原理

1、Servlet3.0 标准中的 ServletContainerInitializer 会扫描所有 jar 包下的 META-INF/services/javax.servlet.ServletContainerInitializer 文件中指定的类并加载

2、加载的就是 Spring web 包下的 SpringServletContainerInitializer

3、然后扫描所有 @HandleType(WebApplicationInitializer)

4、加载 SpringBootServletInitializer 并运行 onStartup 方法

5、加载 @SpringBootApplication 主类,启动容器等

本文到此结束,其它开发可以像 Spring Boot 出现之前一样进行开发,可以配置 web.xml 等。

源码:https://github.com/wangmaoxiong/tiger2

Spring Boot 2.0.3 使用外置 Tomcat 服务器相关推荐

  1. Spring Boot 2.0 配置图文教程 1

    Spring Boot 2.0 配置图文教程 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义 ...

  2. Spring Boot 2.0 的配置详解(图文教程)

    本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...

  3. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目

    使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目 一:创建项目,并添加相应依赖 新建Project,并指定Project为Spring Initializr ...

  4. Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到 17 了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 ‍ ‍文章来源:程序猿DD‍ ‍ 2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M ...

  5. Spring Boot 2.0 热部署指南

    Spring Boot 2.0 支持热部署,实现方法很简单 Spring Boot 2.0 有几种热重载的选项. 推荐的方法是使用spring-boot-devtools 因为它提供了额外的开发时间功 ...

  6. Spring Boot 2.0选择HikariCP作为默认数据库连接池的五大理由

    转载自公众号:工匠小猪猪的技术世界 摘要: 本文非原创,是「工匠小猪猪的技术世界」搜集了一些HikariCP相关的资料整理给大家的介绍,主要讲解了为什么sb2选择了HikariCP以及HikariCP ...

  7. 【译】Spring Boot 2.0 官方迁移指南

    前提 希望本文档将帮助您把应用程序迁移到 Spring Boot 2.0. 在你开始之前 首先,Spring Boot 2.0 需要 Java 8 或更高版本.不再支持 Java 6 和 7 了. 在 ...

  8. Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

    今天继续来聊Spring Boot 2.0的新特性.本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent. 原文首发:http://blog.did ...

  9. Spring Boot 2.0正式发布,升还是不升呢?

    Spring帝国 Spring几乎是每一位Java开发人员都耳熟能详的开发框架,不论您是一名初出茅庐的程序员还是经验丰富的老司机,都会对其有一定的了解或使用经验.在现代企业级应用架构中,Spring技 ...

  10. Spring Boot 2.0 新特性

    作者:贺卓凡 原文:https://mp.weixin.qq.com/s/EWmuzsgHueHcSB0WH-3AQw 以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8 ...

最新文章

  1. SQL Server中的分页查询
  2. Cisco的相关配置
  3. 创业做什么好?先学习精英式创业从平庸到卓越
  4. ssm多数据源的操作
  5. 吴恩达机器学习Ex1
  6. 使用spi协议,接收来自slave的数据之前写0xff的原因
  7. C# WebProxy POST 或者 GET
  8. 法国spin高等计算机学校,法国顶尖“大矿”,一起去矿校挖矿吧!
  9. python中的类装饰器应用场景_Python 自定义装饰器使用写法及示例代码
  10. NET问答: 如何给 ASP.NET Core 配置指定端口 ?
  11. 神舟笔记本电源管理软件_笔记本电脑长期不用充不上电了?原来问题就出在这儿...
  12. ASP.NET Core管道深度剖析[共4篇]
  13. 构建之法第三章学习小记
  14. ros 安装c++编译的可执行文件
  15. axios 上传文件 封装_axios使用及封装
  16. 基于单片机的空气质量监测
  17. Nginx代理百度地图离线瓦片
  18. 帝国cms如何给网站添加百度统计代码,百度统计安装教程步骤分享
  19. 使用Maven创建Web应用程序项目
  20. Docker Desktop 如何运行第一个 Docker 项目

热门文章

  1. [转]C++异常处理 4
  2. 美国人太嚣张(爆笑呀!)
  3. 大数据相加_清华大学黄高——图像数据的语义层扩增方法
  4. mysql 数据生成_mysql生成数据
  5. python时间序列如何拟合曲线_以“datetime”格式拟合时间序列的曲线?
  6. 拓端tecdat|R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
  7. 拓端tecdat|“新媒体”和“社群”调查报告
  8. 社交网络图中结点的“重要性”计算 (30 分)(Floyd)
  9. 目标检测之Faster RCNN理论概述
  10. sql常用函数详解(一)——字符串截取