35.域对象共享数据

本文介绍了如何在Thymeleaf中通过不同方式(如ServletAPI、ModelAndView、Model、Map和ModelMap)在request、session和application域对象间共享数据,以及清除session数据的方法。
摘要由CSDN通过智能技术生成

域对象共享数据

Thymeleaf获取值的写法:

  • request作用域:<p th:text="${xxx}"></p>
  • session作用域及以上:<p th:text="${session/application.xxx}"></p>

清除session作用域数据写法:

  • session.invalidate()

向request域对象共享数据

使用ServletAPI

SharedDataController.java

    @RequestMapping("/testServletAPI")
    public String testServletAPI(HttpServletRequest request){
        request.setAttribute("Servlet","API");
        return "success";
    }

使用ModelAndView

    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        /**
         * ModelAndView有Model和View的功能
         * Model主要用于向请求域共享数据
         * View主要用于设置视图,实现页面跳转
         */
        ModelAndView mav = new ModelAndView();
        //向请求域共享数据
        mav.addObject("testRequestScope", "hello,ModelAndView");
        //设置逻辑视图,实现页面跳转
        mav.setViewName("success");
        return mav;
    }

方法体一定要将ModelAndView设置为返回值

使用Model

    @RequestMapping("/testRequestModel")
	//导入的是包为org.springframework.ui.Model
    public String testModel(Model model){
        model.addAttribute("testRequestScope", "hello,Model");
        return "success";
    }

使用map

    @RequestMapping("/testRequestMap")
    public String testMap(Map<String, Object> map){
        map.put("testRequestScope", "hello,Map");
        return "success";
    }

使用ModelMap

    @RequestMapping("/testRequestModelMap")
    public String testModelMap(ModelMap modelMap){
        modelMap.addAttribute("testRequestScope", "hello,ModelMap");
        return "success";
    }

Model、ModelMap、Map的关系

本质上都是BindingAwareModelMap进行创建的

    public interface Model{}
    public class ModelMap extends LinkedHashMap<String, Object> {}
    public class ExtendedModelMap extends ModelMap implements Model {}
    public class BindingAwareModelMap extends ExtendedModelMap {}

向session域共享数据

    @RequestMapping("/testSession")
    public String testSession(HttpSession session){
        session.setAttribute("testSessionScope", "hello,session");
        return "success";
    }

向application域共享数据

    @RequestMapping("/testApplication")
    public String testApplication(HttpSession session){
		//获取最大域的对象
        ServletContext application = session.getServletContext();
        application.setAttribute("testApplicationScope", "hello,application");
        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值