使用spring MVC时,只需将HttpSession session
添加到方法的签名中,即可轻松将HttpSession传递给方法,稍后您可以执行类似的操作
Integer valueFromSession = (Integer) session.getAttribute("key1")
Integer anotherValueFromSession = (Integer) session.getAttribute("key2")
我现在遇到的问题是,我们需要在许多不同的控制器中使用许多不同方法从会话中获取值,所以我的问题是是否有可能从会话中获取值并自动注入而不是:
@GetMapping("/something")
public String foo(HttpSession session) {
Integer valueFromSession = (Integer) session.getAttribute("key1")
Integer anotherValueFromSession = (Integer) session.getAttribute("key2")
return someMethod(valueFromSession, anotherValueFromSession);
}
我可以拥有:
@GetMapping("/something")
public String foo(HttpSessionData dataFromSession) {
return someMethod(dataFromSession.getValue(), dataFromSession.getAnotherValue();
}
其中DataFromSession是从HttpSession填充的类。有办法吗?
答案 0 :(得分:0)
您可以在Spring MVC中使用@SessionAttribute
,它将从会话中检索现有属性,更多信息请参见here
@GetMapping("/something")
public String foo(@SessionAttribute("key1") Integer key1, @SessionAttribute("key2") Integer key2) {
return someMethod(key1, key2);
}