作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域。在设计和构建 Java Web 应用时,理解这些作用域,如何将数据与对象和这些作用域交互是十分重要的。【在 Stac ...
作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域。在设计和构建 Java Web 应用时,理解这些作用域,如何将数据与对象和这些作用域交互是十分重要的。【在 StackOverflow 上有一篇文章可以帮助你快速了解 request 和 session 作用域】
SPRING MVC 作用域
当我开始用 Spring MVC 编写 Web 应用时,我发现 Spring model 和 session attribute 有一点神秘,尤其当它们与我熟知的 HTTP request 和 session 作用域交互时。一个 Spring model 元素可以从我的 session 或者 request 中找到吗?如果是这样的话,我该如何控制?在这篇文章中,我希望讲解清楚 Spring MVC 的 model 与 session 是如何工作的。
SPRING 的 @MODELATTRIBUTE
有几种方法将数据或对象添加到 Spring 的 model 中。一般来说,数据或对象是通过 controller 层的一个注解添加进 Spring 的 model 中。在下面的例子中,使用 @ModelAttribute 添加一个名为 MyCommandBean 的实例给 key 值为『myRequestObject』的 model。
1 public class MyController { 2 3 @ModelAttribute("myRequestObject") 4 public MyCommandBean addStuffToRequestScope() { 5 System.out.println("Inside of addStuffToRequestScope"); 6 MyCommandBean bean = new MyCommandBean("Hello World",42); 7 return bean; 8 } 9 10 @RequestMapping("/dosomething")11 public String requestHandlingMethod(Model model, HttpServletRequest request) {12 System.out.println("Inside of dosomething handler method");13 14 System.out.println("--- Model data ---");15 Map modelMap = model.asMap();16 for (Object modelKey : modelMap.keySet()) {17 Object modelValue = modelMap.get(modelKey);18 System.out.println(modelKey + " -- " + modelValue);19 }20 21 System.out.println("=== Request data ===");22 java.util.Enumeration reqEnum = request.getAttributeNames();23 while (reqEnum.hasMoreElements()) {24 String s = reqEnum.nextElement();25 System.out.println(s);26 System.out.println("==" + request.getAttribute(s));27 }28 29 return "nextpage";30 }31 32 // ... the rest of the controller33 }
原标题:【译】理解Spring MVC Model Attribute 和 Session Attribute
关键词:Spring
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。