在实际写项目的过程中,我发现@rest controller不能返回页面
@RequestMapping("/logout")
public String logout(HttpSession session){
session.invalidate();
return "redirect:/web/login.html";
}
(注意重定向的路径要写对)
@RestController加在类上面的注解,使得类里面的每个方法都将json/xml返回数据加返回到前台页面中。@RestController=@Controller+@ResponseBody
我的解决方法是将 @Restcontroller改为@Controller,再在其它方法前添加@ResponseBody注解
@Controller//@Controller+@Responsebody
@RequestMapping("users")
public class UserController extends BaseController {
@Autowired
private IUserService userService;
@ResponseBody
@RequestMapping("reg")
public JsonResult<Void> reg(User user) {
// 调用业务对象执行注册
userService.reg(user);
// 返回
return new JsonResult<Void>(OK);
}
@ResponseBody
@RequestMapping("login")
public JsonResult<User> login(String username,
String password,
HttpSession session){
User data= userService.login(username,password);
// 向session对象中完成数据的绑定(session全局的)
session.setAttribute("uid", data.getUid());
session.setAttribute("username", data.getUsername());
session.setMaxInactiveInterval(24*60*60);
//获取session中绑定的数据
System.out.println(getUidFromSession(session));
System.out.println(getUsernameFromSession(session));
return new JsonResult<>(OK,data);
}
@RequestMapping("/logout")
public String logout(HttpSession session){
session.invalidate();
return "redirect:/web/login.html";
}
<li>
<a class="nav-link" href="/users/logout" th:href="@{/users/logout}" style="color: #208c60">注销</a>
</li>
前端代码
老师给我的建议是在前端发送ajax请求,在controller层不返回图像,实现前后端分离。希望我的方案能帮到和我一样啥也不会的人,后续Ajax等写完在分享