我有一个带有构造函数和getter和setter
的User bean类public class User {
private String username;
private String password;
}
我有一个登录用户的控制器
@PostMapping("/login")
public String login(@ModelAttribute User user,Model model){
model.addAttribute("session", user);
return "index1";
}
同一个index1页面的一个演示映射,用于检查会话
@GetMapping("/find")
public String find(Model model){
return "index1";
}
在jsp页面中,我无法检查会话对象中填充的用户
<%@ page errorPage="index.jsp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h1>Login</h1>
<c:if test='${sessionScope.session.user} == "user"'>
<% session.invalidate(); %>
</c:if>
<p>Hello ${sessionScope.session.password}</p>
</body>
</html>
我正在使用Spring的@sessionattribute来使用会话值,而我的会话对象名称是session。
当用户是用户时,如何使会话无效,它总是为空,请帮助。
如何获取存储在会话中的对象内的值
这是一个测试会话处理的演示
答案 0 :(得分:0)
以下将不适合您,
@PostMapping("/login")
public String login(@ModelAttribute User user,Model model){
model.addAttribute("session", user);
return "index1";
}
首先,当您转到ModelAndView
视图时,首先您不会在model
中设置任何内容,而是设置为nullified
对象index1
。
您需要设置if,如下,
@PostMapping("/login")
public ModelAndView login(@ModelAttribute User user, Model model, HttpServletRequest request){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("session", user);
modelAndView.setViewName("index1");
return modelAndView;
}