SpringMVC---共享域对象数据

我们在servlet里面学到,servlet里面一共有四个域对象,四个域对象分别是page对象,request对象,session对象,application对象,四个域对象作用范围从小到大是page<request<session<application,servlet向域对象里面共享数据可以通过setAttribute方法向域对象保存数据,getAttribute向域对象获取数据。那SpringMVC怎么向域对象保存数据呢?

共享域对象数据

一、共享request域数据

1、通过原生servlet方法

配置好前端控制器后和thymeleaf视图解析器后,springMVC里面只需要在方法参数列表里面传入request对象,就可以使用request对应的方法。那向request里面共享数据就和servlet一样,通过setAttribute共享。

    @RequestMapping(value = {"/testrequest"})
    public String toTestValue(HttpServletRequest request){
        request.setAttribute("requestScope","原生servlet共享request数据");
        return "textScope";
    }

在这里插入图片描述

2、ModelAndView共享

ModelAndView,如果翻译过来就是”模型和视图“,可以理解成MVC架构中的”M“和”V“,其中包含”Model“和”view“两部分,主要功能是:(1)设置转向地址(2)将底层获取的数据进行存储(或者封装)(3)最后将数据传递给View。在使用这个类的时候注意返回类型要为ModelAndView类型,转向地址通过ModelAndView方法实现,数据封装通过addObject实现。功能(1)可以设置跳转页面,也就是请求页面,转发页面,通过setViewName方法设置。功能(2)通过addObject实现。

    @RequestMapping(value = {"/testModelAndView"})
    public ModelAndView toTestModelAndView(){
        ModelAndView mav = new ModelAndView();
        mav.addObject("requestScope","ModelAndView共享request数据");
        mav.setViewName("textScope");
        return mav;
    }

3、Model共享

model共享和request共享差不多,传入一个Model实例,通过实例调用方法,然后向request域存数据。

    @RequestMapping(value = {"/testModel"})
    public String toTestModel(Model model){
        model.addAttribute("requestScope","Model共享request数据");
        return "textScope";
    }

4、Map集合共享

    @RequestMapping(value = {"/testMap"})
    public String toTestMap(Map<String,Object> map){
        map.put("requestScope","Map共享request数据");
        return "textScope";
    }

5、ModelMap共享

    @RequestMapping(value = {"/testModelMap"})
    public String toTestModelMap(ModelMap model){
        model.addAttribute("requestScope","ModelMap共享request数据");
        return "textScope";
    }

二、共享session域数据

向session域里面共享数据和request一样,需要传入一个HttpSession 实例,然后通过这个实例调用setAttribute方法传入数据。还有一点就是前端通过thymeleaf视图解析器获取session域数据需要session.键名,和request不同。

    @RequestMapping(value = {"/testSession"})
    public String toTestSession(HttpSession session){
        session.setAttribute("sessionScope","原生servlet共享session数据");
        return "textScope";
    }

在这里插入图片描述

三、共享application域数据

application域是最大的域,作用在整个工程里面。application就是ServletContext,它的获取方法很多,可以通过request获取,也可以通过session获取。

    @RequestMapping(value = {"/testapplication"})
    public String toTestApplication(HttpSession session){
        ServletContext app = session.getServletContext();
        app.setAttribute("applicationScope","原生servlet共享application数据");
        return "textScope";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我没得冰阔落.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值