4 向域对象共享数据

向请求域共享数据

使用ServletAPI向请求域对象共享数据

  • 原理和javaWeb中所学的一样,使用requset.setAttribute()方法

使用ModelAndView向请求域对象共享数据(推荐)

  • ModelAndView是一个类,它包含了Model和View的功能
  • Model:向请求域中共享数据
  • view:设置逻辑视图实现页面跳转
    @RequestMapping("/moderview")
    public ModelAndView testModelAndView(){
//        返回值是ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
//        向请求域共享数据
        modelAndView.addObject("hellokey", "helloValue");
//        设置逻辑视图
        modelAndView.setViewName("sucess");
//        一定要将modelAndView返回
        return modelAndView;
    }
}

如果想在跳转的页面获得请求域数据

  • th:text="${#httpServletRequest.getAttribute('hellokey')}
  • th:text="${hellokey}
  • `th:text="${#Request.getAttribute(‘hellokey’)}

使用Model,ModelMap,Map向请求域共享数据

Model使用
  • 不能自己创建model,因为它是一个接口,需要在控制器方法的形参中获取
  • 使用例子
    @RequestMapping("/model")
    public String testmodel(Model model){
        model.addAttribute("yyy", "xxx");//向请求域中添加数据
        return "sucess";
    }
ModelMap使用
  • 在控制器方法形参获得modelMap
  • 使用modelMap中的addAttribute向请求域中添加数据
  • 控制器方法返回逻辑视图字符串
Map使用
  • 在控制器方法的形参位置设置Map<String,Object> map
  • 然后再用map.put添加键值对即可
  • 控制器方法返回逻辑视图字符串
上面的三种方式的形参其实底层都是通过BindingAwareModeMap来实例化实现的

向会话域(session)和应用域(ServletContext)共享数据

  • 如果想会话域和应用域共享数据
  • 想要拿到session
    • 在request中获取session,如果你使用了形参HttpServletRequest request,使用request.getSession()可以获取session并向里添加数据
    • 直接在控制器方法中使用HttpSession session然后添加数据
  • 想要拿到servletContext
    • 可以通过request.getServletContext()来获取servletContext
    • 可以通过session.getServletContext()来获取servletContext
  • session和servletContext
    • session保存数据除到非你关闭浏览器
    • servletContext保存数据到除非重启服务器
    • 即使重启服务器session依旧钝化保存数据除非浏览器关闭,但是idea默认是不保存的,可以改
  • 在th语法中,如果想从session和servletContext获取数据
    • 使用${session.xxx}
    • 使用${application.xxxx}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值