zl程序教程

您现在的位置是:首页 >  后端

当前栏目

SpringMVC属性域【请求域、会话域、应用域】

2023-09-14 09:14:08 时间

一、五大请求域操作方式

1. request.setAttribute()

使用原生 request 对象

 @RequestMapping("/h01")
    public String h01(HttpServletRequest request){
        request.setAttribute("uname","jim");
        return "succ02";
    }

2. model.addAttribute()

Model其实是一个map,它的角色就是request属性域

    @RequestMapping("/h02")
    public String h02(Model model){
        model.addAttribute("uname","tom");
        return "succ02";
    }

3. modelMap.addAttribute()

ModelMap其实是一个map,它的角色也是request属性域

    @RequestMapping("/h03")
    public String h03(ModelMap modelMap){
        modelMap.addAttribute("uname","lucy");
        return "succ02";
    }

4. map.put()

既然Model和ModelMap就是一个map,直接用map保存作用域!

    @RequestMapping("/h04")
    public String h04(Map map){
        map.put("uname","kate");
        return "succ02";
    }

5. ModelAndView 

1.创建ModelAndView对象

2.存入模型数据

3.设置视图名称

    @RequestMapping("/h05")
    public ModelAndView h05(){
        ModelAndView mv = new ModelAndView();
        mv.addObject("uname","rose");
        mv.setViewName("succ02");
        return mv;
    }

6. 模型的本质 

SpringMVC 传入的 Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的。

二、会话域

1.使用会话域最简单直接的办法就是使用原生的 HttpSession 对象

2.使用原生request对象:request.getSession().setAttribute() = session.setAttribute()

@RequestMapping("/attr/session")
public String attrSession(HttpSession session) {
    session.setAttribute("HW", "helloworld");
    return "index。html";
}

三、应用域

应用域同样是使用原生对象来操作

@Autowired
private ServletContext servletContext;
​
@RequestMapping("/attr/application")
public String attrApplication() {
    servletContext.setAttribute("SC", "helloworld");
    return "index.html";
}