使用SpringBoot创建web项目,并使用外部Tomcat

news2024/10/7 20:29:04

使用SpringBoot创建web项目,并使用外部Tomcat

目录

  • 使用SpringBoot创建web项目,并使用外部Tomcat
    • 简单介绍:
    • 特点:
    • 步骤简介
    • 下面就使用SpringBoot创建一个web工程,并且使用外部的Tomcat和实现对jsp的支持:
      • 一、创建工程
        • 1.首先使用spring初始化器新建一个工程:
        • 2.取好自己的工程名,并且选择==打包方式为war==的形式:
        • 3.工程自动创建的两个类
        • 4.创建webapp、WEB-INF、web.xml
      • 二、使用外部Tomcat,并且使工程支持jsp
      • 三、测试是否支持jsp
        • controller
        • 跳转页面
        • 访问页面
        • application.properties
        • 测试

简单介绍:

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

在springboot中默认使用的是嵌入式的servlet容器,我们可以不用引入外部Tomcat就可以运行程序。这样的嵌入式容器优点就是简单、便携,但是缺点也比较明显,比如他默认不支持jsp,优化定制比较复杂等。

特点:

  1. 创建独立的Spring应用程序

  2. 嵌入的Tomcat,无需部署WAR文件

  3. 简化Maven配置

  4. 自动配置Spring

  5. 提供生产就绪型功能,如指标,健康检查和外部配置

  6. 绝对没有代码生成并且对XML也没有配置要求

步骤简介

  • 必须创建一个war项目
  • 在pom.xml文件中将嵌入式Tomcat指定为provided
 <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-tomcat</artifactId>
		<scope>provided</scope>
	</dependency>
  • 必须有SpringBootServletInitializer子类(已默认创建了)
  • 最后启动服务器就可以使用了

下面就使用SpringBoot创建一个web工程,并且使用外部的Tomcat和实现对jsp的支持:

一、创建工程

1.首先使用spring初始化器新建一个工程:

在这里插入图片描述

2.取好自己的工程名,并且选择打包方式为war的形式:

注:
     使用jar包形式应用启动流程:执行springboot主类的main方法—>启动IOC容器—>创建嵌入式servlet容器

     使用war包形式应用启动流程:启动服务器—>服务器启动springboot应用—>创建IOC容器

结论:可以看出,使用war包的形式和使用jar的形式启动过程相反!
在这里插入图片描述

点击Next
在这里插入图片描述
在这里插入图片描述

3.工程自动创建的两个类

工程新建完毕之后,目录结构如下所示,默认帮我们自动创建了两个类(这两个类非常重要,一定不能删除):
在这里插入图片描述
注:第一个类是用来启动我们的容器的,如果删除了则容器不能正常启动,第二个类是我们springboot的主类

4.创建webapp、WEB-INF、web.xml

一个常规的web工程,在src/main目录下都会有一个webapp目录,但是我们当前的工程并没有这个目录,我们可以手动的创建一个webapp目录以及webapp下的WEB-INF目录,也可以使用intellij来生成该目录。这里我们选择生成该目录,使用快捷键:ctrl+alt+shift+s打开project structure,我们可以看到我们当前的项目不仅是spring项目,也是一个web项目
在这里插入图片描述
.点击自动创建webapp目录,点击OK就自动生成了webapp目录:

  • 点击Web
  • 双击红色的
  • 注意 Web resource directory path 是项目根路径+\src\main\webapp

在这里插入图片描述
另外,我们的web工程应该还有一个web.xml文件,这里我们也在指定的目录生成一个web.xml文件,最后点击ok:

  • 点击“+”
  • 点击“1 web.xml”

在这里插入图片描述
路径是:项目跟路径+\src\main\webapp\WEB-INF\web.xml
点击OK
在这里插入图片描述

再次点击OK
在这里插入图片描述
这时我们的工程目录结构如下:
在这里插入图片描述
此时我们的web工程就建立完成了,接下来就是要引入我们外部的Tomcat容器了(将我们外部的Tomcat整合进intellij IDEA),不再使用springboot默认的嵌入式容器了,并且使我们的工程支持jsp!!!

二、使用外部Tomcat,并且使工程支持jsp

1.将Tomcat整合进我们的idea中(选择一个本地的Tomcat服务器)
在这里插入图片描述

2.选择你本地的Tomcat,并配置Tomcat相关信息,配置完毕之后点击OK,这里我们就将外部的Tomcat整合到我们的工程中了
在这里插入图片描述

部署应用:
在这里插入图片描述
在这里插入图片描述

到此处我们的外部Tomcat就整合完毕了,接下来就写一个jsp页面进行测试:

三、测试是否支持jsp

1.编写一个controller和一个用户访问的静态页面hello.jsp页面,一个访问成功后跳转的页面success.jsp页面
在这里插入图片描述
源码:

controller

HelloController.java

package com.bjpowernode.springbootwebtomcatjsp;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {
    @GetMapping("/success")
    public String hello(Model model){
        model.addAttribute("msg","你好");
        return "success";
    }
}



跳转页面

src\main\webapp\WEB-INF\success.jsp
Success.jsp

<%--
  Created by IntelliJ IDEA.
  User: HHH
  Date: 2023/1/17
  Time: 12:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>成功界面</title>
</head>
<body>
<h1>Success</h1>
<h3>这是测试信息:${msg}</h3>
</body>
</html>

访问页面

src\main\webapp\hello.jsp
hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>hello</title>
</head>
<body>
<h1>Hello!!!</h1>
<a href="/success">点击我跳转到成功页面!!!</a>

</body>
</html>

2.为了让我们请求后返回的视图能够得到解析,我们要在全局配置文件中配置解析前缀和后缀:

application.properties

在这里插入图片描述

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

3.点击进行运行,可以看到控制台打印了开启我们外部Tomcat的一些信息和启动了IOC容器

测试

浏览器访问 localhost:8080/hello.jsp
点击超链接

在这里插入图片描述
在这里插入图片描述
到这里我们的项目就可以使用jsp进行正常的web开发了!后面将记录如何在springboot中整合thymeleaf和jsp两种模板引擎进行web开发!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIDL 应用间简单通信demo及基本问题

AIDL:Android Interface Definition Language,即Android接口定义语言。 他的作用大家已经知道了&#xff0c;有些童鞋对于其中的使用细节可能会有一些理解误差&#xff0c;并且会造成一写异常或者通讯失败。 我们先看几个关键点再看代码&#xff0c;如果项目不符合这几点&…

ffmpeg编译android平台-(ubuntu+ndkr16b+ffmpeg3.4.12)

一、环境配置 1、下载NDK,NDK老版本 1.1、 ubuntu下载 wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip1.2、解压NDK unzip android-ndk-r16b-linux-x86_64.zip1.3、配置NDK环境变量 vim /etc/profile1.4、 在profile文件中添加如下内容…

String.prototype.matchAll called with a non-global RegExp argument

如上 matchAll这个API 与 正则的全局匹配是不一样的。他会将匹配到的所有字符串以迭代器的形式返回出来。 我们可以使用Array.from或者数据解构来获得匹配到的数组。 他与正则全局匹配的区别是当正则表达式包含()捕获组的时候&#xff0c;全局匹配无法获得子匹配组的数据。 …

【Datewhale一起吃瓜 Task1】周志华西瓜书第一章+第二章

这里写目录标题机器学习是干什么的机器学习的理论基础: PAC模型基本术语关于数据关于假设关于模型训练机器学习任务分类归纳偏好模型的评估和选择训练流程划分数据集的方法留出法交叉验证自助法性能度量机器学习是干什么的 我们目前处于大数据时代&#xff0c;每天会产生数以亿…

一个监控系统的典型架构是什么样的

典型架构 采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。然后就是对时序库的数据进行分析和可视化,分析部分最典型的就是告警规则判断(复杂一些的会引入统计算法和机器学习的能力做预判),即图上的告警引擎,告警引擎产生告警事件之后交给…

华为MPLS跨域带RR实验配置

目录 Option B方案实验配置 配置建立Vpnv4邻居 配置反射器 配置RR和ASBR取消RT值检测 配置ASBR相连接口开启MPLS 配置ASBR向RR发送路由时更改下一跳 Option C1方案实验配置 Option C2方案实验配置 接口IP地址、底层IGP路由协议&#xff08;ISIS&#xff09;、MPLS LDP协…

一种环状二肽3705-26-8,cyclo(Pro-Phe),环(PHE-PRO)环状二肽

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;3705-26-8中文名&#xff1a;环(PHE-PRO)英文名&#xff1a;cyclo(Pro-Phe)&#xff0c;CYCLO(-PHE-PRO)结构式&#xff08;Structural&#xff09;&#xff1a;详细产品数据&#xff08;…

qq消息撤回

开发工具 工具名称工具类型说明AndroidStuduo编辑工具开发工具jadxjava工具将apk解成java项目xposed插件工具插件qq版本8.8.80 开始 先通过jadx把apk反编译出来源码&#xff0c;通过build出来&#xff0c;在android studio打开&#xff0c;方便分析。 要撤回自己的消息&…

TMC步进电机驱动stealthChop

一直觉得tmc系列的芯片功能很强大&#xff0c;但是我自己读寄存器手册的感觉就是每个字我都认识&#xff0c;怎么就这么难懂。。。。 stealthChop 是一种电压控制技术&#xff0c;基于电压斩波器的工作远离&#xff0c;可在低速中速范围内以最大扭矩实现绝对静音的步进电机控制…

【推荐】自用软件工具推荐 WIN

一、图片查看器 Honeyview 蜂蜜浏览器 免费的图像查看器 下载和功能说明 (bandisoft.com) 轻量而快速可以显示包括 GPS 信息在内的 JPEG 格式的 EXIF 信息对图像格式进行批量转换和调整大小支持显示 GIF 和 WebP 动图无需解压即可直接查看压缩包中的图像支持的格式 图像格式…

大厂整个项目的开发规范流程

第1节、大厂码农开发基础 内容 本章节给大家介绍在互联网做开发&#xff0c;基础环境、开发技术以及上线和监控都会用到哪些东西。一般互联网大厂像阿里、京东、腾讯等都会有公司自研的一些技术组件&#xff0c;比如&#xff1a;RPC、MQ、数据库路由等&#xff0c;但所有的这些…

API 网关的功能用途及实现方式

1. API 网关诞生背景 前言 API 经济生态链已经在全球范围覆盖&#xff0c; 绝大多数企业都已经走在数字化转型的道路上&#xff0c;API 成为企业连接业务的核心载体&#xff0c; 并产生巨大的盈利空间。快速增长的 API 规模以及调用量&#xff0c;使得企业 IT 在架构上、模式…

flume整合数据到kafka,sparkStreaming消费数据,并存储到hbase和redis中

目录 1、模拟数据生成 2、flume采集数据 1、node01配置flume的conf文件 2、node02开发flume的配置文件 3、node03开发flume的配置文件 4、开发flume启动停止脚本 5、node01执行以下命令创建kafka的topic 6、启动并查看kafka的数据 3、SparkStreaming消费kafka中的数…

第二章.线性回归以及非线性回归—LASSO算法

第二章.线性回归以及非线性回归 2.13 LASSO算法 1.前期导入&#xff1a; 通过构造一个一阶惩罚函数获得一个精炼的模型&#xff1b;通过最终确定一些指标(变量)的系数为零&#xff0c;解释力很强 岭回归估计系数等于0的机会微乎其微&#xff0c;造成筛选变量困难 擅长处理具有…

如何实现根据环境切换不同配置?

在企业开发中&#xff0c;系统的配置信息往往会分不同的环境&#xff0c;如开发环境、测试环境、生产环境。当我们使用nacos做为配置中心时&#xff0c;一定会遇到的问题就是在应用中配置nacos的server-addr时测试环境的nacos地址和线上nacos地址如何区分的问题 拿开发环境和正…

4.4 可迭代对象(Iterable)与迭代器(Iterator)

4.4 可迭代对象(Iterable)与迭代器&#xff08;Iterator&#xff09; 4.4.1 可迭代&#xff08;Iterable&#xff09;对象 如果一个对象实现了__iter__方法&#xff0c;那么这个对象就是可迭代&#xff08;Iterable&#xff09;对象>>> #如何知道一个对象实现了那些…

STM32MP157内核移植相关bug

STM32MP157 官方Linux5.15内核移植相关bug一、主频问题二、驱动开发时的头文件缺失问题三、结语一、主频问题 在初学STM32MP157驱动开发时&#xff0c;笔者曾对官方最新版的Linux内核进行了移植&#xff0c;但是因为一些问题&#xff0c;导致移植后的系统存在一些bug。最近笔者…

Java学习之抽象类

目录 一、抽象类引出 二、抽象类的介绍 三、抽象类的细节 第一条 第二点 第三点 第四点 第五点 第六点 第七点 第八点 四、练习 第一题 第二题 一、抽象类引出 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法&#xff0c;这个方法就是抽象方法,用…

【设计模式】创建者模式·建造者模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一.概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 …

Python实现哈里斯鹰优化算法(HHO)优化支持向量机回归模型(SVR算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO)&#xff0c;该算法有较强的全…