在spring boot 中实现页面跳转

news/2024/12/27 0:41:58/文章来源:https://www.cnblogs.com/yololin/p/18634424

一、项目依赖与环境准备
添加 Thymeleaf 依赖
在项目的 pom.xml 文件中添加以下依赖:

org.springframework.boot
spring-boot-starter-thymeleaf

这会引入 Thymeleaf 相关的库,使 Spring Boot 项目能够支持 Thymeleaf 模板引擎。Thymeleaf 可以方便地将数据与 HTML 页面进行绑定和渲染,实现动态页面展示。
创建 HTML 模板页面
在 src/main/resources/templates 目录下创建所需的 HTML 页面,例如 login.html 和 home.html。
login.html 可能包含登录表单的 HTML 结构,如下所示:

Login Page

Login



这里的 th:action 是 Thymeleaf 的属性,用于指定表单提交的 URL。th:if 和 th:text 用于根据后端传递的错误信息进行条件显示和文本渲染。 home.html 可以是登录成功后的主页内容,例如:Home Page

Welcome!

其中 th:text 用于显示后端传递的欢迎消息。 二、控制器逻辑 定义控制器类 创建一个带有 @Controller 注解的 Java 类,例如 PageController: import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.servlet.ModelAndView; @Controller 注解表明这个类是一个 Spring MVC 控制器,负责处理 HTTP 请求并返回相应的视图。 处理登录页面请求 使用 @GetMapping 注解定义一个方法来处理对登录页面的 GET 请求: @GetMapping("/login") public String showLoginPage() {return "login"; } 当用户访问 /login 路径时,这个方法会被调用,它直接返回 "login",这是 login.html 页面的视图名称。Spring Boot 会根据视图解析器的配置(默认情况下会查找 src/main/resources/templates 目录下的同名 HTML 文件)找到对应的 HTML 页面并返回给客户端。 处理登录表单提交 使用 @PostMapping 注解定义一个方法来处理登录表单的 POST 请求: @PostMapping("/login") public ModelAndView processLogin(Model model, String username, String password) {// 这里可以添加登录验证逻辑if ("admin".equals(username) && "123456".equals(password)) {ModelAndView mav = new ModelAndView("home");mav.addObject("message", "登录成功");return mav;} else {ModelAndView mav = new ModelAndView("login");mav.addObject("error", "用户名或密码错误");return mav;} } 这个方法接收 Model 对象、用户名和密码作为参数。在方法内部,可以进行登录验证逻辑,这里简单地比较了用户名和密码是否为预设值。 如果验证成功,创建一个 ModelAndView 对象,指定视图名称为 "home",并通过 addObject 方法添加一个名为 "message" 的属性,其值为 "登录成功"。然后返回这个 ModelAndView 对象,Spring Boot 会将其渲染为 home.html 页面并返回给客户端。 如果验证失败,同样创建一个 ModelAndView 对象,视图名称为 "login",并添加一个名为 "error" 的属性,其值为 "用户名或密码错误",然后返回,这样登录页面就会显示错误信息。 处理首页请求(可选) 可以定义一个方法来处理对首页的请求: @GetMapping("/home") public String showHomePage() {return "home"; } 当用户直接访问 /home 路径时,会返回 home.html 页面。 通过以上步骤,就可以使用 Thymeleaf 模板引擎在 Spring Boot 项目中实现登录页面和主页之间的页面跳转,并传递相关数据进行页面展示。这种方式利用了 Thymeleaf 的强大功能,使得页面开发和数据交互更加便捷和灵活。

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

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

相关文章

PostgreSQL 初始化配置设置

title: PostgreSQL 初始化配置设置 date: 2024/12/27 updated: 2024/12/27 author: cmdragon excerpt: PostgreSQL是一款广泛应用于企业级应用、数据仓库以及Web应用程序的强大数据库管理系统。在完成数据库的安装后,进行合理而有效的初始配置是确保数据库性能和安全性的关键…

Chrome浏览器不太愿意使用http3/quic怎么办?如何强制让Chrome开启http3/quic

1. 确认你要访问的网站支持h3 一定要有Alt-svc标头2. 配置Chrome启动参数,对指定网站强制开启Http3 右键点击桌面Chrome图标,选择属性,在Chrome.exe后添加启动参数,网站地址替换为你想要开启的网站地址。 chrome.exe --origin-to-force-quic-on=localhost:6001 https://loc…

postgis和postgresql学习

一、两者关系 postgresql本质上还是sql驱动的数据库,和mysql、sqlserver等是性质相同的 postgis本质上是postgresql的插件,可以将postgresql这种关系型数据库改造成空间数据库 二、环境配置 postgresql:https://www.enterprisedb.com/downloads/postgres-postgresql-downloa…

并发编程 - 死锁的产生、排查与解决方案

多线程中死锁因资源争夺形成循环等待,必要条件为互斥、占有并等待、不可剥夺、循环等待。可用VisualStudio等工具排查,解决办法包括顺序加锁、尝试锁、超时机制、避免嵌套使用锁。在多线程编程中,死锁是一种非常常见的问题,稍不留神可能就会产生死锁,今天就和大家分享死锁…

一维数组、多维数组、Array(deepToString sort fill binarySearch)方法2024122620241226

数组20241226 [数组详情](深入理解 Java 数组 - 静默虚空 - 博客园)什么是数组: 数组是相同类型数据的有序集合注意:必须是相同数据数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素。 每个数组元素可以通过一个下标来访问它…

《计算机组成及汇编语言原理》阅读笔记:p116-p120

《计算机组成及汇编语言原理》学习第 7 天,p116-p120 总结,总计 5 页。 一、技术总结 1.CPU优化 (1)increase overall performance number 例如:16位电脑提升到32位电脑。 (2)multiprocessing One way to make computers more useful is to allow them to run more than on…

波折重重:Linux实时系统Xenomai宕机问题的深度定位过程

本文将带您深入了解一个与之相关的真实事故现场及其问题定位过程,波折重重,其中的xenomai问题定位思路具有一定借鉴意义,希望对你定位xenomai问题有所帮助。目录一 前言二 背景三 原因分析及措施硬件原因应用软件操作系统四 分析定位转机拨云见雾irq计数Schedstatcoreclk现象…

Java面向对象程序设计复习总结

作者:高世栋 学号:202302151071 一、第一章:初识Java与面向对象程序设计Java简介:Java是一种面向对象的程序设计语言,具有跨平台、安全性高、可移植性强等特点。面向对象程序设计概述:面向对象是一种程序设计思想,将现实世界的事物抽象为对象,通过对象之间的交互来完…

[Paper Reading] StegoType: Surface Typing from Egocentric Cameras

目录StegoType: Surface Typing from Egocentric CamerasTL;DRData数据采集设备开环数据收集闭环数据收集数据容错机制OracleMethodInput FeaturesBackboneDataLossExperiment效果可视化总结与思考相关链接Related works中值得深挖的工作资料查询 StegoType: Surface Typing fr…

JVM实战—2.JVM内存设置与对象分配流转

大纲 1.JVM内存划分的原理细节 2.对象在JVM内存中如何分配如何流转 3.部署线上系统时如何设置JVM内存大小 4.如何设置JVM堆内存大小 5.如何设置JVM栈内存与永久代大小 6.问题汇总1.JVM内存划分的原理细节 (1)背景引入 (2)大部分对象的存活周期都是极短的 (3)少数对象是长期存活…

【Obsidian】 博客园插件

搬运 原文作者:ZhangBlog 出处:https://www.cnblogs.com/aaalei/p/17926199.html由于 Markdown 语法的便捷性, 我们从繁重的排版布局工作中解脱出来, 越来越多的人开始接受这种写作方式, 该插件可以将你的 md 笔记, 方便的同步到博客园中, 即使你是使用的本地图片, 也无须担心…

【数据分析】如何构建数据分析体系?

一、数据分析体系的重要性二、如何搭建数据分析体系三、数据分析体系如何量体裁衣编者荐语: 很详细 以下文章来源于ruby的数据漫谈 ,作者ruby 摘要:在当今数字化时代,数据已成为企业决策和发展的重要依据。构建一个完善的数据分析体系,能够帮助企业从海量数据中挖掘价值,…