SpringMVC:域对象共享数据
域对象概述
根据有作用范围由小到大:
page(jsp有效)------>page域指的是pageContext.
request(一次请求)--->request域request HttpServletContext
session(一次会话)--->session域session HttpSession
application(当前web应用)--->application域指的是application ServletContext;
之所以他们是域对象,原因是他们都内置了map集合,都有setAttribute和getAttribute方法。
详细介绍:https://www.cnblogs.com/BelieveFish/p/10069308.html
request域对象中的数据,可以直接使用变量名获取
session域对象中的数据,需要使用session.变量名进行获取
application域对象中的数据,需要使用application.变量名进行获取
域对象共享数据
1、使用servletAPI向request域对象共享数据
@RequestMapping("/testRequestByServletAPI")
public String testRequestByServletAPI(HttpServletRequest request){
request.setAttribute("messsage","通过原生Servlet向request域对象共享数据");
return "success";
}
<p th:text="${messsage}"></p>
2、使用ModelAndView向request域对象共享数据
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("messsage","通过ModelAndView向request域对象共享数据");
modelAndView.setViewName("success");
return modelAndView;
}
3、使用Model向request域对象共享数据(常用)
@RequestMapping("/testModel")
public String testModel(Model model){
model.addAttribute("messsage","通过model向request域对象共享数据");
return "success";
}
4、使用Map向request域对象共享数据
@RequestMapping("/testMap")
public String testMap(Map<String,Object> map){
map.put("messsage","通过map向request域对象共享数据");
return "success";
}
5、使用ModelMap向request域对象共享数据
@RequestMapping("/testModelMap")
public String testModelMap(ModelMap modelMap){
modelMap.addAttribute("messsage","通过ModelMap向request域对象共享数据");
return "success";
}
6、Model、Map、ModelMap之间的关系
7、向Session域共享数据
向session域对象共享数据时,建议使用原生ServletAPI(HttpSession)进行共享。
@RequestMapping("/testSession")
public String testSession(HttpSession session){
session.setAttribute("msg","向session域对象共享数据");
return "success";
}
<p th:text="${session.msg}"></p>
8、向Application域共享数据
@RequestMapping("/testApplication")
public String testApplication(HttpSession session){
ServletContext application =session.getServletContext();
application.setAttribute("msg","向application域对象共享数据");
return "success";
}
<p th:text="${application.msg}"></p>