thymeleaf 重定向页面_springboot集成thymeleaf中遇到的问题

在SpringBoot项目中,使用Thymeleaf遇到重定向问题,源于将控制器方法注解为@RestController。该注解导致返回字符串而非跳转页面。解决方法是改为@Controller注解,或者在方法中接收HttpServletResponse参数,调用sendRedirect()方法进行重定向。参考文章提供了详细解释和示例。
摘要由CSDN通过智能技术生成

错误:不能返回页面,只返回字符串。

原因:在controller中使用了注解@RestController

修改:修改注解为@Controller

@Controller

分析:

RestController = Controller + ResponseBody.加上RestController,返回的内容是你return中的内容,如果是return "Hello World",页面显示的就是Hello World。加上Controller,返回的是return中对应的页面,比如return “hello”,页面的名称是hello。

http://blog.csdn.net/weixin_38303684/article/details/78024891

这篇文章解释还可以。

5aad121d40e621951442fc3e7fe1233a.png

这个

c3169fe10252e081a4401dc82fe4b21b.png

这个modelandview这个可以进行跳转:

首先,我们需要在 Spring Boot 项目添加 Thymeleaf 和 Spring Security 的依赖。 ```xml <!-- Thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 然后,我们需要创建一个修改密码的页面,比如说 `change-password.html`。 ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>修改密码</title> </head> <body> <h1>修改密码</h1> <form method="post" th:action="@{/change-password}"> <div> <label for="currentPassword">当前密码:</label> <input type="password" id="currentPassword" name="currentPassword"/> </div> <div> <label for="newPassword">新密码:</label> <input type="password" id="newPassword" name="newPassword"/> </div> <div> <label for="confirmPassword">确认密码:</label> <input type="password" id="confirmPassword" name="confirmPassword"/> </div> <input type="submit" value="修改密码"/> </form> </body> </html> ``` 在这个页面,我们定义了一个表单,包含当前密码、新密码和确认密码三个字段,以及一个提交按钮。 接着,我们需要创建一个 Controller,处理修改密码的请求。 ```java @Controller public class PasswordController { @GetMapping("/change-password") public String changePasswordForm() { return "change-password"; } @PostMapping("/change-password") public String changePassword(HttpServletRequest request, Model model) { String currentPassword = request.getParameter("currentPassword"); String newPassword = request.getParameter("newPassword"); String confirmPassword = request.getParameter("confirmPassword"); // TODO: 校验密码是否正确,以及新密码和确认密码是否一致 // TODO: 更新密码 return "redirect:/logout"; } } ``` 在这个 Controller ,我们定义了两个方法,一个用来展示修改密码的页面,一个用来处理修改密码的请求。在处理请求的方法,我们首先获取当前密码、新密码和确认密码三个字段,然后校验当前密码是否正确,以及新密码和确认密码是否一致。如果校验通过,我们就可以更新密码了。最后,我们重定向到 `/logout`,让用户重新登录。 最后,我们需要在 Spring Security 配置修改密码的页面和请求。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/change-password").authenticated() .anyRequest().permitAll() .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .logoutUrl("/logout") .permitAll(); } } ``` 在这个配置,我们定义了 `/change-password` 请求需要认证,其他请求则不需要认证。同时,我们还定义了登录页面和登出请求的 URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值