当前位置: 首页 > news >正文

如何将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就可以了。 

相关文章:

如何将jsp项目转成springboot项目

昨天说过&#xff0c;springboot推荐使用Thymeleaf作为前后端渲染的模板引擎&#xff0c;为什么推荐用Thymeleaf呢&#xff0c;有以下几个原因&#xff1a; 动静结合&#xff1a;Thymeleaf支持HTML原型&#xff0c;允许在HTML标签中增加额外的属性来实现模板与数据的结合。这样…...

C语言:环形链表

1.例子1&#xff1a;环形链表 142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;我们先定义两个变量slow和fast&#xff0c;slow每次走一步&#xff0c;fast每次走两步&#xff0c;如果链表是环形链表&#xff0c;那么必定存在fast不会走到链表的最后…...

typescript综合练习1(展开音乐播放列表)

Playlist Soundness What’s up, friend?! I’m so pumped you’re joining us. We’ve got a sick project we could totally use your help on! See, someone’s giving us amazing recommendations for songs to play. But they’re not just coming in as songs. Someti…...

零基础入门学习Python第二阶02面向对象,迭代器生成器,并发编程

Python语言进阶 面向对象相关知识 三大支柱&#xff1a;封装、继承、多态 例子&#xff1a;工资结算系统。 """月薪结算系统 - 部门经理每月15000 程序员每小时200 销售员1800底薪加销售额5%提成"""from abc import ABCMeta, abstractmethodcl…...

Unity | Shader基础知识(第十三集:编写内置着色器阶段总结和表面着色器的补充介绍)

目录 前言 一、表面着色器的补充介绍 二、案例viewDir详解 1.viewDir是什么 2.viewDir的作用 3.使用viewDir写shader 前言 注意观察的小伙伴会发现&#xff0c;这组教程前半部分我们在编写着色器的时候&#xff0c;用的是顶点着色器和片元着色器的组合。 SubShader{CGPRO…...

JavaScript map对象/set对象详解

文章目录 一、map对象二、map对象应用场景1. 数组元素转换2. 对象数组的属性提取或转换3. 数组元素的复杂转换4. 与其他数组方法结合使用5. 与异步操作结合&#xff08;使用 Promise&#xff09;6. 生成新的数据结构7. 数学和统计计算 三、set对象1. 基本使用2. 特性3. 注意事项…...

【kettle017】kettle访问DB2数据库并处理数据至execl文件(最近完善中)

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下DB2数据库&#xff08;IBM公司开发的一套关系型数据库管理系统&#xf…...

Spring Cloud原理详解和作用特点

当涉及到构建和管理分布式系统的微服务架构时&#xff0c;Spring Cloud 是一个备受欢迎的选择。它提供了一套强大的工具和组件&#xff0c;使开发者能够轻松地构建、部署和管理微服务应用程序。本文将深入探讨 Spring Cloud 的原理和作用特点。 1. Spring Cloud 的原理 Sprin…...

Linux —— 进程间通信

目录 一、进程间通信的介绍二、管道三、匿名管道四、命名管道五、system V进程间通信 一、进程间通信的介绍 1.进程间通信的概念 进程通信&#xff08;Interprocess communication&#xff09;&#xff0c;简称&#xff1a;IPC&#xff1b; 本来进程之间是相互独立的。但是…...

ASP.NET信息安全研究所设备管理系统的设计与实现

摘 要 以研究所的设备管理系统为背景&#xff0c;以研究所设备管理模式为研究对象&#xff0c;开发了设备管理系统。设备管理系统是设备管理与计算机技术相结合的产物&#xff0c;根据系统的功能需求分析与定义的数据模式&#xff0c;分析了应用程序的主要功能和系统实现的主…...

<网络安全>《81 微课堂<安全产品微简介(1)>》

1 简单的了解复杂的安全产品 产品简要防火墙网络区域边界上部署&#xff0c;主要作用是隔离阻断。安全审计一般包括网络日志的分析、网络流量的监控和用户行为的跟踪等。发现网络中的潜在问题和漏洞。入侵检测IDS实时监控和检测网络中的异常活动和入侵行为。入侵防御IPS防病毒…...

【6D位姿估计】FoundationPose 跑通demo 训练记录

前言 本文记录在FoundationPose中&#xff0c;跑通基于CAD模型为输入的demo&#xff0c;输出位姿信息&#xff0c;可视化结果。 然后分享NeRF物体重建部分的训练&#xff0c;以及RGBD图为输入的demo。 1、搭建环境 方案1&#xff1a;基于docker镜像&#xff08;推荐&#xf…...

Python 中 “yield“ 的不同行为

在我们使用Python编译过程中&#xff0c;yield 关键字用于定义生成器函数&#xff0c;它的作用是将函数变成一个生成器&#xff0c;可以迭代产生值。yield 的行为在不同的情况下会有不同的效果和用途。 1、问题背景 在 Python 中&#xff0c;“yield” 是一种生成器&#xff0…...

迅睿CMS中实现关键词搜索高亮

在迅睿CMS系统中实现关键词搜索高亮是提升用户体验和搜索效果的重要手段。当用户搜索某个关键词时&#xff0c;将搜索结果中的关键词高亮显示&#xff0c;可以帮助用户更快速地定位到所需信息。 关键词高亮的实现 在迅睿CMS中&#xff0c;你可以使用内置的dr_keyword_highlig…...

晶振的精度与稳定性有什么关系?

晶振的精度和稳定性是电子设备中非常重要的参数&#xff0c;它们受到多种因素的影响&#xff0c;主要包括&#xff1a; 精度的影响因素&#xff1a; 温度变化&#xff1a;晶体的温度系数会使得频率随温度变化而变化&#xff0c;通常在0C到55C的工业标准温度范围内&#xff0c;…...

【C】137 只出现一次的数字

给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 解法一 #include <stdio.h>int singleNumber(i…...

51单片机入门:DS1302时钟

51单片机内部含有晶振&#xff0c;可以实现定时/计数功能。但是其缺点有&#xff1a;精度往往不高、不能掉电使用等。 我们可以通过DS1302时钟芯片来解决以上的缺点。 DS1302时钟芯片 功能&#xff1a;DS1302是一种低功耗实时时钟芯片&#xff0c;内部有自动的计时功能&#x…...

Redis-5 分布式锁

一.为什么要使用分布式锁&#xff1f; 传统的互斥锁synchronized只能作用于同一台虚拟机上的线程&#xff0c;在使用服务器集群部署的情况下&#xff0c;互斥锁就会失效&#xff0c;因此要采用分布式锁来处理不同服务器上的线程访问同一资源的情况。 二.redis的分布式锁是如何…...

音转文工具,9.8k star! 【送源码】

我们经常会遇到将音频转为文字的情况&#xff0c;比如在开会时录音的会议纪要、上课时录下的老师讲课内容。虽然网上也有一些在线的工具可以将音频转为文字&#xff0c;但是考虑到数据安全和费用问题&#xff0c;使用起来也不是很方便。 今天了不起给大家介绍一款开源工具——…...

【首次发布】华为 OD 机试 C卷抽中题库清单(真题库),目前华为OD机考以C卷为主,特殊情况会发送D卷

本篇博客为大家整理华为 OD 考友反馈 C 卷抽中题&#xff0c;经过 1 个的考友复盘&#xff0c;目前已经收录 100 题目&#xff0c;预计在有 2 周可以收集完整。 所有题目&#xff0c;都有考友截图反馈&#xff0c;同时欢迎大家机考过后&#xff0c;提供橡皮擦真题&#xff0c;获…...

Midjourney Spinach印相实操手册:手把手配置--sref、--stylize、--cw权重,5分钟复刻暗房级颗粒与褪色层次

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Spinach印相的核心美学溯源 Midjourney Spinach印相并非官方功能命名&#xff0c;而是社区对一类高对比度、低饱和、肌理感强烈且带有手工暗房隐喻的图像生成风格的诗意指称。“Spinach”一…...

谷歌首次阻止AI驱动的零日漏洞攻击,黑客利用AI找漏洞手段曝光

AI零日漏洞攻击计划浮出水面谷歌威胁情报小组&#xff08;GTIG&#xff09;的报告显示&#xff0c;“知名网络犯罪威胁行为者”正谋划利用人工智能开发的零日漏洞发动“大规模利用事件”。其目标是绕过一款未具名的“开源、基于网络的系统管理工具”的双因素认证。目前谷歌已成…...

杂交瘤技术:单克隆抗体制备的经典核心技术

杂交瘤技术&#xff08;Hybridoma Technology&#xff09;是通过人工细胞融合技术&#xff0c;将经抗原免疫的 B 淋巴细胞与骨髓瘤细胞融合&#xff0c;构建可无限增殖且分泌高纯度、高特异性单克隆抗体的杂交瘤细胞系的核心技术。该技术由 Georges Kohler 与 Cesar Milstein 于…...

VS2019集成libigl实战:从零到一的图形学开发环境搭建

1. 环境准备&#xff1a;从零搭建开发基础 第一次接触libigl和VS2019的组合时&#xff0c;我完全能理解那种手足无措的感觉。记得当时为了赶图形学课程作业&#xff0c;我和室友熬了三个通宵才把环境跑通。现在回头看&#xff0c;其实只要掌握几个关键步骤&#xff0c;整个过程…...

从零到一:PyQt-Fluent-Widgets导航组件实战指南

从零到一&#xff1a;PyQt-Fluent-Widgets导航组件实战指南 【免费下载链接】PyQt-Fluent-Widgets A fluent design widgets library based on C Qt/PyQt/PySide. Make Qt Great Again. 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Fluent-Widgets 你是否曾经为P…...

HDiffPatch实际应用案例:APK文件差异化和Android应用商店优化

HDiffPatch实际应用案例&#xff1a;APK文件差异化和Android应用商店优化 【免费下载链接】HDiffPatch a C\C library and command-line tools for Diff & Patch between binary files or directories(folder); cross-platform; runs fast; create small delta/differentia…...

Drogon框架数据库连接监控终极指南:性能指标与智能告警机制

Drogon框架数据库连接监控终极指南&#xff1a;性能指标与智能告警机制 【免费下载链接】drogon Drogon: A C14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows 项目地址: https://gitcode.com/gh_mirrors/dr/drogon Drogon是一个基于…...

基于GitHub Actions的AI智能体部署指南:exoclaw-github实战解析

1. 项目概述&#xff1a;在GitHub里养一只会看代码的“螃蟹”如果你在GitHub上维护过开源项目&#xff0c;肯定遇到过这样的场景&#xff1a;新开的Issue描述不清&#xff0c;得来回问好几轮才能定位问题&#xff1b;PR提交上来&#xff0c;你得逐行审阅代码&#xff0c;既费时…...

自动化测试(十二) 分布式系统测试-缓存-注册中心与链路追踪验证

分布式系统测试&#xff1a;缓存、注册中心与链路追踪验证上篇咱们搞定了消息队列测试&#xff0c;今天继续深入分布式系统的其他组件——Redis缓存、服务注册中心、分布式链路追踪。这些"基础设施"的测试往往被忽略&#xff0c;但出了问题定位起来最头疼。一、Redis…...

【ElevenLabs API接入黄金手册】:20年AI语音工程师亲授5大避坑要点与3小时极速上线实战路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs API接入黄金手册&#xff1a;开篇导论与核心价值定位 ElevenLabs 以行业领先的语音自然度、情感表现力与多语言支持能力&#xff0c;成为生成式AI语音服务的事实标准。其API并非仅提供TTS基…...