将用户对象添加到每个请求和响应

时间:2014-01-21 11:52:23

标签: spring-mvc

在Spring MVC 3中的每个请求和响应中附加用户对象的方法是什么。 所以在Jsp上,如果我执行request.getAttribute(“user”),那么我应该能够获取用户对象。

感谢所有人。

2 个答案:

答案 0 :(得分:2)

会话属性中

User个对象

您可以将User对象放在会话属性中:

@Controller
public class MyMvcController
{
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(HttpServletRequest request)
    {

        User user = ... // initialise your User object here
        request.getSession().setAttribute("user", user);

        return "hello";
    }
}

如果将User对象放在会话属性中,它将在HTTP请求之间存储在服务器上,因此您只需在应用程序的某个位置初始化它。

在JSP中,您可以使用User或使用EL访问session.getAttribute("user")对象:${user.id}${user.name} ...

MVC模型中的

User对象

或者,如果您不想将对象存储在会话属性中,则可以在每个请求中创建一个新的User对象,并将其放入MVC模型中,如this answer中所述:< / p>

@ControllerAdvice
public class GlobalControllerAdvice {

  @ModelAttribute
  public void myMethod(Model model) {

    User user = // initialise your User object here
    model.addAttribute("user", user);

  }
}

有关详细信息,请参阅原始答案。

在JSP中,您可以使用User或使用EL访问request.getAttribute("user")对象:${user.id}${user.name} ...

答案 1 :(得分:0)

您希望每个请求和响应都包含User对象。

  @Controller
  @SessionAttribute("user")
  public class UserController{

  }

JSP代码:

<form:form modelAttribute="user">...</form:form>

您可以根据需要使用该用户对象:

${user.name}  //equivalent to request.getAttribute("user").getName();
${user.age}