gpt4 book ai didi

java - Spring @SessionAttribute 如何在同一 Controller 中检索 session 对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:27 27 4
gpt4 key购买 nike

我正在使用 Spring 3.2.0 MVC。因为我必须将一个对象存储到 session 中。目前我正在使用 HttpSession set 和 get 属性来存储和检索值。

它只返回字符串而不是对象。当我尝试在 session 中设置对象时,我想使用 @SessionAttribute 但我无法检索 session 对象

 @RequestMapping(value = "/sample-login", method = RequestMethod.POST)
public String getLoginClient(HttpServletRequest request,ModelMap modelMap) {
String userName = request.getParameter("userName");
String password = request.getParameter("password");
User user = sample.createClient(userName, password);
modelMap.addAttribute("userObject", user);
return "user";
}


@RequestMapping(value = "/user-byName", method = RequestMethod.GET)
public
@ResponseBody
String getUserByName(HttpServletRequest request,@ModelAttribute User user) {

String fas= user.toString();
return fas;
}

两种方法都在同一个 Controller 中。我将如何使用它来检索对象?

最佳答案

@SessionAttributes 注释在类级别用于:

  1. 标记一个模型属性应该保存到 HttpSession 在执行处理程序方法之后
  2. 在执行处理程序方法之前,用之前从 HttpSession 保存的对象填充您的模型——如果存在的话

因此您可以将它与您的 @ModelAttribute 注释一起使用,如本例所示:

@Controller
@RequestMapping("/counter")
@SessionAttributes("mycounter")
public class CounterController {

// Checks if there's a model attribute 'mycounter', if not create a new one.
// Since 'mycounter' is labelled as session attribute it will be persisted to
// HttpSession
@RequestMapping(method = GET)
public String get(Model model) {
if(!model.containsAttribute("mycounter")) {
model.addAttribute("mycounter", new MyCounter(0));
}
return "counter";
}

// Obtain 'mycounter' object for this user's session and increment it
@RequestMapping(method = POST)
public String post(@ModelAttribute("mycounter") MyCounter myCounter) {
myCounter.increment();
return "redirect:/counter";
}
}

另外不要忘记常见的菜鸟陷阱:确保你的 session 对象是可序列化的。

关于java - Spring @SessionAttribute 如何在同一 Controller 中检索 session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com