Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)

1、问题概述?

Springboot对Thymeleaf支持的要更好一些,Springboot内嵌的Tomcat默认是没有JSP引擎,不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。

2、Springboot整合使用JSP过程

现在很多的IDEA版本即使创建的项目类型是WAR工程,但是在项目中也没有webapp目录和web.xml目录,这个是需要重点解决的问题。

2.1、创建工程,引入相关包信息

1、核心包就是tomcat-embed-jasper

2、由于我们创建的是springboot工程spring-boot-starter-tomcat包是不需要的。

3、由于在jsp模板引擎中我们喜好使用JSTL+EL表达式,如果需要也可以导入JSTL的包,但如果只是测试JSP是否能成功访问,要不要这个包不影响大局。

<?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>3.1.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.txc</groupId><artifactId>springjspdemo2</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>springjspdemo2</name><description>springjspdemo2</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 使用jsp引擎,springboot内置tomcat没有此依赖 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><scope>provided</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></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><configuration><image><builder>paketobuildpacks/builder-jammy-base:latest</builder></image><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build></project>

2.2、通过IDEA生成webapp及web.xml配置文件

2.2.1、选择File->Project Structure

2.2.2、选择Modules-> + -> Web

2.2.3、创建webapp根目录

这步重点就是创建webapp目录,我选择创建在src下,创建在其他地方都是可以的。

2.2.4、选择Web->+ 添加web.xml文件

要将WEB-INF/web.xml创建在上面创建的webapp目录中

2.2.5、创建成功后效果

有些版本创建后,可能会出现没有web.xml配置文件或者web.xml没有内容。这个时候只要webapp创建没有问题,直接从其他地方拷贝一个web.xml也是有效的。

2.3、在application.properties中配置视图解析器

由于视图解析器中配置的目录在WEB-INF/view目录,所以还需要手动在创建view目录。

【application.properties】

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

【application.yml】

如果使用的是yml文件,配置相同,写法不同

server:port: 8081
spring:mvc:view:prefix: /WEB-INF/view/suffix: .jsp

2.4、创建view目录及index.jsp测试页面

${username}是获取后端request/session/application/ModelMap等中保存的值,一会会使用到。

2.5、创建测试类

@Controller
public class TestController {@RequestMapping("/index")public String test(HttpSession session){session.setAttribute("username","博主-雾林小妖");System.out.println("====1=23=2=====");return "index";}}

2.6、启动工程,访问程序

访问地址:http://localhost:8081/index

3、源码下载

https://download.csdn.net/download/tangshiyilang/88676797

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

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

相关文章

kivy BoxLayout说明

BoxLayout的特点 自动排列&#xff1a;BoxLayout会根据其orientation属性&#xff08;垂直或水平&#xff09;自动排列其子部件。这简化了布局的过程&#xff0c;尤其是当你有许多需要按顺序排列的部件时。可定制的间距和对齐&#xff1a;通过spacing属性&#xff0c;你可以控…

QT应用篇 三、QML自定义显示SpinBox的加减按键图片及显示值效果

QT应用篇 一、QT上位机串口编程 二、QML用Image组件实现Progress Bar 的效果 三、QML自定义显示SpinBox的加减按键图片及显示值效果 文章目录 QT应用篇前言一、qml需求二、使用组件1.SpinBox组件2.SpinBox中QML的使用 总结 前言 记录自己学习QML的一些小技巧方便日后查找 QT的…

Python魔法方法之__getattr__和getattribute

在Python中有这两个魔法方法容易让人混淆&#xff1a;__getattr__和getattribute。通常我们会定义__getattr__而从来不会定义getattribute&#xff0c;下面我们来看看这两个的区别。 __getattr__魔法方法 class MyClass:def __init__(self, x):self.x xdef __getattr__(self, …

【起草】【第十二章】定制ChatGPT数字亲人

身为普普通通的我们&#xff0c;不知道亲人们在哪一天就要离开这个世界 &#xff1f; 作为普普通通的程序员&#xff0c;我们可以为我们的亲人做点什么 &#xff1f; 让他们以数字资产形式留在人世间 ? 对话&#xff5c;6岁女孩病逝捐器官&#xff0c;妈妈&#xff1a;她去…

【ROS2】MOMO的鱼香ROS2(一)ROS2入门篇——从Ubuntu操作系统开启

从Ubuntu操作系统开启 引言1 术语汇总2 Ubuntu &#xff08;操作系统&#xff09;2.1 Ubuntu权限管理2.2 Ubuntu安装软件2.2.1 使用apt命令安装2.2.2 dpkg安装deb包2.2.3 make install源代码安装 2.3 Ubuntu之常用指令2.3.1 ls命令&#xff08;查看文件&#xff09;2.3.2 cd 命…

2024任务驱动Java程序设计讲课提纲

文章目录 为何采用任务驱动&#xff1f;任务驱动Java程序设计课程概述项目一&#xff1a;踏上Java开发之旅任务1&#xff1a;安装配置JDK并开发第一个Java程序1、安装JDK2、配置JDK环境变量3、开发第一个Java程序 任务2&#xff1a;搭建Java集成开发环境IntelliJ IDEA1、安装In…

07|输出解析:用OutputParser生成鲜花推荐列表

07&#xff5c;输出解析&#xff1a;用OutputParser生成鲜花推荐列表 模型 I/O Pipeline 下面先来看看 LangChain 中的输出解析器究竟是什么&#xff0c;有哪些种类。 LangChain 中的输出解析器 语言模型输出的是文本&#xff0c;这是给人类阅读的。但很多时候&#xff0c;你…

livox avia平台搭建

硬件平台搭建 硬件平台的搭建除了livox雷达外还需要以下物料 焊接12V稳压模块接口 livox雷达需要12V的稳定电压供电,因此需要在电池与雷达之间加入8-35V转12V的稳压模块 组装 将各组建组装起来即可。 220V交流电供电 电池供电

谷歌Linux内核自动测试平台架构介绍-用自动测试测试难以测试的问题

1 摘要 内核和硬件等低级系统已被证明极难进行有效测试&#xff0c;因此&#xff0c;许多内核测试都是以手动为主方式进行的。现有的大多数测试框架都是为测试与底层平台隔离的高级软件而设计的&#xff0c;而底层平台被假定是稳定可靠的。测试底层平台本身需要一套全新的假设…

研究:同样的C++模板在多个cpp里出现,编译器是否要重复生成?

2023年就要过去&#xff0c;马上要跨如2024年。祝大家在新的一年&#xff0c;有个好收成。 一直以来不是很确定&#xff1a; 同样的的模板&#xff0c;在各个cpp分别出现&#xff0c;编译器要实现几份&#xff1f; 研究一下。 用命令行的编译方法&#xff0c;参考&#xff1a…

使用react+vite开发项目时候,部署上线后刷新页面无法访问解决办法

说一下我这边的环境和使用的路由模式&#xff1a;vitereactBrowserRouter路由模式&#xff0c;所以如果你和我一样的话&#xff0c;可以试试我的这种解决办法&#xff0c;我是将项目打包后直接丢到服务器上的目录里面&#xff0c;然后配置nginx直接访问根目录。 我的nginx配置…

Java 类型转换

自动 1 短的变长的 2 表达式的自动类型转换 多种数据类型参与运算&#xff0c;其结果以大的数据类型为准byte, short, char 三种类型数据在和其他类型数据运算时&#xff0c;都会转换为int类型再运算&#xff08;byte byte也会是int int&#xff09; 强制 前面我们学习了自…

Python中matplotlib使用3

在matplotlib中&#xff0c;可以将数据用离散的点来表示&#xff0c;这种表示方式叫做散点图。 1 基本的散点图 可以使用matplotlib.pyplot库中的scatter()方法绘制散点图&#xff0c;代码如图1所示。 图1 绘制基本散点图的代码 从图1中可以看出&#xff0c;scatter()方法的…

【操作系统xv6】学习记录1

前置说明&#xff1a; git-v9版本&#xff1a;git clone https://github.com/mit-pdos/xv6-public/tree/xv6-rev9 bili:https://www.bilibili.com/video/BV15r4y1z75F 深圳大学罗秋明老师的课程 我自己用的wsl2的ubuntu18 无桌面版本 make qemu-nox bug 起初在双系统的ubuntu…

【HR非技术问题面试篇】你怎么看待加班?

你对加班怎么看待? &#x1f60a;老油条经典回答系列 &#x1f60a;老油条经典回答系列 这种问题&#xff0c;怎么回答都可以&#xff0c;我觉得重要的实时表达你自己。如果你就不想加班&#xff0c;也没必要勉强说自己爱加班&#xff0c;结果入职之后干的不开心。 不过&…

大数据应用领域:数据驱动一切

大数据出现的时间只有十几年&#xff0c;被人们广泛接受并应用只有几年的时间&#xff0c;但就是这短短几年的时间&#xff0c;大数据呈现出爆炸式增长的态势。在各个领域&#xff0c;大数据的身影几乎无处不在。今天我们通过一些大数据典型的应用场景分析&#xff0c;一起来看…

使用webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

在我们使用 Selenium 进行 UI 自动化测试时&#xff0c;常常会因为浏览器驱动与浏览器版本不匹配&#xff0c;而导致自动化测试无法执行&#xff0c;需要手动去下载对应的驱动版本&#xff0c;并替换原有的驱动&#xff0c;可能还会遇到跨操作系统进行测试的时候&#xff0c;以…

linux go环境安装 swag

下载依赖包 go get -u github.com/swaggo/swag编译 移动到下载的go-swagger包目录,一般在$GOPATH/pkg/mod下 查看 GOPATH echo $GOPATHcd /root/GolangProjects/pkg/mod/github.com/swaggo/swagv1.16.2go install ./cmd/swag/不出意外&#xff0c;$GOPATH/bin下 已经有了sw…

【VRTK】【VR开发】【Unity】17-创建立体UI

【背景】 游戏无法忽略的一个要素就是UI界面,本篇开始介绍VRTK这方面的能力。 VR游戏的UI和传统电视游戏UI的不同之处在于,VR游戏的UI必须融合在VR的游戏空间内,而传统电视游戏的UI则可以位于游戏画面的上层,位于屏幕的特定位置,比如表示人物血量等的图示等。不同于传统的…

对比学习简介

1. 引言 在本教程中&#xff0c;我们将介绍对比学习领域中的相关概念。首先&#xff0c;我们将讨论这种技术背后相关的理论知识&#xff1b;接着&#xff0c;我们将介绍最常见的对比学习的损失函数和常见的训练策略。 闲话少说&#xff0c;我们直接开始吧&#xff01; 2. 举…