【发布时间】:2015-07-20 17:14:26
【问题描述】:
我正在尝试将一些数据存储在会话属性中,但是在之后尝试更新它时遇到了一些奇怪的问题。我正在使用 Spring Boot 1.2.4
我创建了一个测试控制器来描述问题。
@RestController
@SessionAttributes(TestController.ATTRIBUTE)
public class TestController {
public static final String ATTRIBUTE = "attribute";
@ResponseStatus(value = HttpStatus.OK)
@RequestMapping(value = "/set/{value}", method = RequestMethod.POST)
public void set(@PathVariable Long value, HttpSession session) {
System.out.println("Set value to: " + value + " session id:\t" + session.getId());
session.setAttribute(ATTRIBUTE, value);
}
@ResponseStatus(value = HttpStatus.OK)
@RequestMapping(value = "/get", method = RequestMethod.GET)
public void get(HttpSession session) {
System.out.println("Value: " + session.getAttribute(ATTRIBUTE) + " session id:\t\t" + session.getId());
}
}
例如,如果我这样调用这些方法:
localhost:8080/set/1
localhost:8080/set/2
localhost:8080/get
我希望得到如下所示的输出(不包括会话 ID):
Set value to: 1
Set value to: 2
Value: 2
但是我得到的是(包括会话 ID):
Set value to: 1 session id: 9D6F9948E81654E4087F418EF6BF5157
Set value to: 2 session id: 9D6F9948E81654E4087F418EF6BF5157
Value: 1 session id: 9D6F9948E81654E4087F418EF6BF5157
【问题讨论】:
-
在 get & set 方法中打印会话 id 以确保您正在查看正确的会话
-
我已经用会话 ID 更新了问题。这是同一个会话。
标签: java spring-mvc spring-boot