如何将jsp项目转成springboot项目

昨天说过,springboot推荐使用Thymeleaf作为前后端渲染的模板引擎,为什么推荐用Thymeleaf呢,有以下几个原因:

  1. 动静结合:Thymeleaf支持HTML原型,允许在HTML标签中增加额外的属性来实现模板与数据的结合。这样,前端美工可以在浏览器中查看页面的静态效果,而后台开发人员则可以查看数据返回到页面后的动态效果。这种动静结合的特性使得开发和调试过程更加便捷。
  2. 开箱即用:Thymeleaf提供了标准和Spring标准两种方言,可以直接套用模板实现JSTL、OGNL表达式效果。这意味着开发人员无需每天重复编写模板、修改JSTL或标签,从而提高了开发效率。同时,开发人员还可以扩展和创建自定义的方言,以满足特定的需求。
  3. 与Spring MVC完美集成:Thymeleaf与Spring MVC的集成非常完善,可以快速实现表单绑定、属性编辑器、国际化等功能。这使得在Spring Boot项目中使用Thymeleaf时,可以更加轻松地实现前后端的交互和数据的展示。
  4. 安全性:Thymeleaf在处理模板时,能够有效地防止一些常见的Web安全问题,如跨站脚本攻击(XSS)等。它通过转义机制来确保用户输入的数据在输出到页面时不会被误解为HTML或JavaScript代码,从而提高了应用的安全性。
  5. 易于扩展和维护:Thymeleaf的模板语法简洁易懂,易于学习和使用。同时,它还提供了丰富的API和工具类,方便开发人员进行扩展和定制。这使得在后期维护和升级过程中,可以更加轻松地修改和优化模板代码。

不过很多项目还是用了jsp技术,那么怎么将传统的使用了jsp技术的java web项目转换为springboot项目呢?

首先,访问https://start.spring.io/

创建一个springboot项目

下面再进行改造项目的配置:

  • 1. 添加依赖

在你的pom.xml文件中添加以下依赖:

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.tomcat.embed</groupId>
		    <artifactId>tomcat-embed-jasper</artifactId>
		    <scope>provided</scope>
		</dependency>
        <dependency>
		    <groupId>jstl</groupId>
		    <artifactId>jstl</artifactId>
		    <version>1.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
</dependencies>
  • 2. 配置application.properties

src/main/resources目录下的application.properties文件中添加以下配置:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
  • 3. 创建JSP文件

src/main/webapp/WEB-INF/jsp目录下创建一个名为index.jsp的文件,并添加以下内容: 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Spring Boot JSP Example</title>
</head>
<body>
    <h1>Hello, Spring Boot JSP!</h1>
</body>
</html>
  •  4. 创建Controller

在项目中创建一个名为IndexController的Java类,并添加以下内容: 

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

@Controller
public class IndexController {

    @GetMapping("/")
    public String index() {
        return "index";
    }
}
  •  5. 运行项目

运行你的Spring Boot项目,然后在浏览器中访问http://localhost:8080,界面应该能看到"Hello, Spring Boot JSP!"的输出。

 

最后,再将你的jsp页面迁移,Servlet改造成@Controller就可以了。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【投稿资讯】区块链会议CCF C -- CoopIS 2024 截止7.10 附录用率

会议名称&#xff1a;CoopIS CCF等级&#xff1a;CCF C类学术会议 类别&#xff1a;人机交互与普适计算 录用率&#xff1a;2023年接收率21% (21 regular 10 work-in-progress papers/100) AREA 5: HUMAN-CENTRIC SECURITY AND PRIVACY IN INFORMATION SYSTEMS Access Con…

编程入门(六)【Linux系统基础操作四】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;if else条件控制基本的if语句带else的if语句嵌…

一文了解队列

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、队列是什么&#xff1f;二、队列的实现三、功能函数的实现1.节点定义2.队列初始化3.队列销毁4.队列尾插5.队列头删6.返回队头数据7.返回队尾数据8.返回队列…

电脑那些可以升级的基本配置

一. 中央处理器&#xff08;CPU&#xff09;&#xff1a;&#xff08;若不是焊点的可以升级&#xff09; 1、一句话简介&#xff1a; 这是电脑的心脏&#xff0c;决定了电脑的处理能力。常见的品牌有Intel和AMD。 2、换CPU指南&#xff1a; 1) 处理器品牌&#xff1a; - 主要…

mybatis-plus代码

项目结构 config package com.example.mpdemo.config;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept…

FPGA串口屏方案

FPGA串口屏方案 客户应用&#xff1a;应用于工业自动化、智能家电、交通轨道、数据机房、充电桩、电力医疗、国防安全、共享设备等显示领域 主要功能&#xff1a; 1.支持几十种食材工作模式 2.支持存储自定义工作模式 3.支持延时工作 4.支持保温工作 5.支持压强模式/温度模…

统信UOS 1070如何制作GHOST镜像并安装到其他设备

原文链接&#xff1a;统信UOS 1070制作GHOST镜像并安装到其他设备 Hello&#xff0c;大家好啊&#xff01;对于想要快速部署多台计算机或在硬件更换后恢复系统的用户来说&#xff0c;制作一个GHOST镜像是一种非常高效的方法。今天&#xff0c;我将介绍如何在统信UOS 1070桌面操…

边缘网关畅维通达EN6400使用测评

1. 引言 在当前快速发展的工业4.0时代&#xff0c;边缘计算已经成为了一个关键技术&#xff0c;它能够使数据处理更加接近数据源头&#xff0c;从而提高处理速度并降低响应时间。这一技术尤其在工业自动化领域显示出了极大的潜力&#xff0c;因为它能有效处理大量来自工业设备…

简单数据结构——栈和队列1(栈超全)(初始化,销毁,出栈入栈销毁实现,例题运用)

知识特点 类似数据表链表&#xff0c;在逻辑上依次存储&#xff0c;但对比顺序表和链表有所限制&#xff0c;不能随便存储 一定要先掌握顺序表的实现&#xff0c;本人博客有顺序表专栏大家可以自行查看&#xff0c;看懂顺序表专栏之后再来了解栈的实现会更容易懂。 如果还没…

Xilinx FPGA底层逻辑资源简介(1):关于LC,CLB,SLICE,LUT,FF的概念

LC&#xff1a;Logic Cell 逻辑单元 Logic Cell是Xilinx定义的一种标准&#xff0c;用于定义不同系列器件的大小。对于7系列芯片&#xff0c;通常在名字中就已经体现了LC的大小&#xff0c;在UG474中原话为&#xff1a; 对于7a75t芯片&#xff0c;LC的大小为75K&#xff0c;6输…

LangChain:简化大模型应用

LangChain 框架提供了常见用例的抽象&#xff0c;简化了大型语言模型&#xff08;LLM&#xff09;&#xff08;如 OpenAI GPT4 或 Google PaLM&#xff09;的应用。它支持 JavaScript 和 Python。 为了弄清楚为什么需要 LangChain&#xff0c;我们先来看下 LLM 的工作原理。 …

ctfshow-web入门-102

这个题我想记录一下&#xff0c;主要是这个方法属实是有点惊艳到我了。故而进行记录&#xff0c;也为了方便大家阅读理解。 看题目&#xff0c;根据题目我写一下我的分析&#xff1a; $_POST传入一个v1&#xff0c;$_GET传入一个v2&#xff0c;一个v3。 赋值符号 优先级高于…

echarts双Y轴,并实现图例等

一个Y轴时yAxis为对象 yAxis: {type: value,name: 占比(%) },两个Y轴时yAxis为数组 yAxis: [{ // 左侧的type: value,name: 占比(%),nameTextStyle: {padding: [0, 0, 10, -50]},min: 0,max: 100,splitNumber: this.splitNumber, // 设置坐标轴的分割段数interval: 20, // 标轴…

【牛客】Tokitsukaze and Average of Substring

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和。 开一个int类型的前缀和数组pre[30][N]&#xff08;pre[i][j]表示某字符转成的数字 i 在一段区间的前缀个数。因为字母表有‘a’~z…

并发编程实现

一、并行编程 1、Parallel 类 Parallel类是System.Threading.Tasks命名空间中的一个重要类&#xff0c;它提供数据并行和任务并行的高级抽象。 For和ForEach Parallel类下的For和ForEach对应着普通的循环和遍历(普通的for和foreach)&#xff0c;但执行时会尝试在多个线程上…

Blender修改器

修改器 Modifier&#xff0c;对模型进行修改&#xff0c;相当于一个函数。 修改器图标是界面右下角的扳手样式 每个修改器的顶部都有如下样式&#xff0c;从左到右分别为&#xff1a;展开/折叠&#xff0c;修改器类型&#xff0c;修改器名称&#xff0c;编辑模式按钮&#xff…

游戏辅助 -- 某游戏一键端配置

游戏一键端下载地址及安装视频&#xff1a; https://pan.quark.cn/s/e6a373d94707 ​https://pan.quark.cn/s/ef7ab0c48776 准备工作 Vmware虚拟机软件&#xff1a;用于创建和管理虚拟机。 SecureCRT&#xff1a;一款支持SSH的终端仿真程序&#xff0c;用于远程登陆服务器…

SoC系统中AXI4 AXI3兼容性及exclusive access

AXI4和AXI3是高级扩展接口&#xff08;Advanced eXtensible Interface&#xff09;的两个不同版本&#xff0c;它们都是用于SoC&#xff08;System on Chip&#xff09;设计中的总线协议&#xff0c;用于处理器和其它外设之间的高速数据传输。以下是它们之间的一些主要区别&…

vscode设置免密登录远程服务器

文章目录 1. 问题描述2. 解决方案3. 原理 1. 问题描述 当我们使用vscode的ssh连接远程服务器后&#xff0c;过一段时间后&#xff0c;总是要求登录服务器的密码。 这就导致一个麻烦就是: 无论是在公司还是在学校&#xff0c;密码往往不是自己设置的&#xff0c;所以记忆起来就…

利用BACnet分布式IO控制器优化Niagara楼宇自动化系统

在智能建筑领域&#xff0c;随着物联网技术的飞速发展&#xff0c;如何实现高效、灵活且安全的楼宇自动化控制成为了行业关注的焦点。BACnet IP分布式远程I/O模块&#xff0c;作为这一领域的创新成果&#xff0c;正逐渐成为连接智能建筑各子系统的关键桥梁&#xff0c;尤其在与…