一、项目依赖与环境准备
添加 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 PageLogin
这里的 th:action 是 Thymeleaf 的属性,用于指定表单提交的 URL。th:if 和 th:text 用于根据后端传递的错误信息进行条件显示和文本渲染。
home.html 可以是登录成功后的主页内容,例如:
Home PageWelcome!
其中 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 的强大功能,使得页面开发和数据交互更加便捷和灵活。