1 域对象
- 域对象包括以下三个(范围从小到大):
- request:请求范围
- session:一次会话范围(浏览器关闭)
- application:应用范围(服务器关闭)
2 使用ServletAPI向request域对象共享数据
使用很少
@RequestMapping("/test")
public String testServletAPI(HttpServletRequest request){
request.sertAttribute("attributeName","value");
return "success";
}
3 使用ModelAndView向request域对象共享数据
ModelAndView:字面意思,包含两个层面,Model & View。具备两个功能,一是实现数据共享(Model),二是页面跳转(View)
(推荐方法)其实其他所有方法的数据共享和页面跳转最终都被封装为ModelAndView
@RequestMapping("/ModelAndView")
public ModelAndView testMAV(){
/*
Model:向请求域中共享数据
View:页面跳转
*/
ModelAndView mav = new ModelAndView();
//向请求域中共享数据
mav.addObject("attributeName","value");
//设置逻辑视图
mav.setViewName("success");
//返回mav
return mav;
}
4 使用Model、ModelMap、Map向Request域共享数据
三种底层类型都是BindingAwareModelMap,所以创建BindAwareModelMap的继承的父类或者接口均可
Model
@RequestMapping("/Model")
public String testModel(Model model){
//向请求域中共享数据
model.addAttribute("attributeName","value");
//返回mav
return "success";
}
ModelMap
@RequestMapping("/ModelMap")
public String testModelMap(ModelMap modelMap){
//向请求域中共享数据
modelMap.addAttribute("attributeName","value");
//返回mav
return "success";
}
Map
@RequestMapping("/map")
public String testMap(Map<String,Object> map){
map.put("attributeName","value");
return "success";
}
5 向session域共享数据
@RequestMapping("/session")
public String testSession(HttpSession session){
session.setAttribute("attributeName","value");
return "success";
}
6 向application域共享数据
@RequestMapping("/application")
public String testSession(HttpSession session){
ServletContext application = session..getServletContext();
application.setAttribute("attributeName","value");
return "success";
}
PS thymeleaf中获取域中的共享数据
- request–> ${requestAttributeName}
- session–> ${session.sessionAttributeName}
- application–>${application.applicationAttributeName}