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>

posted @ 2021-12-22 17:28  amo丶k  阅读(85)  评论(0编辑  收藏  举报