从会话对象中获取值

时间:2016-12-19 13:35:58

标签: java spring-mvc session session-variables httpsession

我有一个带有构造函数和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。

当用户是用户时,如何使会话无效,它总是为空,请帮助。

如何获取存储在会话中的对象内的值

这是一个测试会话处理的演示

1 个答案:

答案 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;
    }