• (续)SSM整合之springmvc笔记(域对象共享数据)(P136-138)


    目录

    一  使用ServletAPI向request域对象共享数据

    二  使用ModelAndView向request域对象共享数据

    1   新建TestScopeController

    2  index.html

    3  书写TestScopeController

    4  success.html

    5   测试 

    三  使用Model向request域对象共享数据

    1  index.html

     2    TestScopeController

    四  使用map向request域对象共享数据

    1 . index.html

     2    TestScopeController

    3   测试

    五  使用ModelMap向request域对象共享数据

    1 . index.html

     2    TestScopeController

    3   测试

    六   Model、ModelMap、Map的关系

    七   向session域共享数据

    八   向application域共享数据

    1 . index.html

    2    TestScopeController

    3 .success.html

     4 测试


    一  使用ServletAPIrequest域对象共享数据

    1. @RequestMapping("/testServletAPI")
    2. public String testServletAPI(HttpServletRequest request){
    3. request.setAttribute("testScope", "hello,servletAPI");
    4. return "success";
    5. }

    二  使用ModelAndViewrequest域对象共享数据

    1   新建TestScopeController

    2  index.html

    <a th:href="@{/test/mav}">测试通过ModelAndView向请求域共享数据a><br>

    3  书写TestScopeController

    1. /*
    2. * * 向域对象共享数据:
    3. * 1、通过ModelAndView向请求域共享数据
    4. * 使用ModelAndView时,可以使用其Model功能向请求域共享数据
    5. * 使用View功能设置逻辑视图,但是控制器方法一定要将ModelAndView作为方法的返回值
    6. * */
    7. @Controller
    8. public class TestScopeController {
    9. @RequestMapping("/test/mav")
    10. public ModelAndView testMAV(){
    11. /**
    12. * ModelAndView包含Model和View的功能
    13. * Model:向请求域中共享数据
    14. * View:设置逻辑视图实现页面跳转
    15. */
    16. ModelAndView mav = new ModelAndView();
    17. //向请求域中共享数据
    18. mav.addObject("testRequestScope", "hello,ModelAndView");
    19. //设置逻辑视图
    20. mav.setViewName("success");
    21. return mav;
    22. }
    23. }

    4  success.html

    1. html>
    2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. <h1>success.htmlh1>
    9. <p th:text="${testRequestScope}">p>
    10. body>
    11. html>

    5   测试 

     

     总结 :

      向域对象共享数据:
      1、通过ModelAndView向请求域共享数据
       使用ModelAndView时,可以使用其Model功能向请求域共享数据
       使用View功能设置逻辑视图,但是控制器方法一定要将ModelAndView作为方法的返回值
    

    三  使用Modelrequest域对象共享数据

    1  index.html

    <a th:href="@{/test/model}">测试通过Model向请求域共享数据a><br>

     2    TestScopeController

    1. /* 2、使用Model向请求域共享数据 */
    2. @RequestMapping("/test/model")
    3. public String testModel(Model model){
    4. //org.springframework.validation.support.BindingAwareModelMap
    5. System.out.println(model.getClass().getName());
    6. model.addAttribute("testRequestScope", "hello,Model");
    7. return "success";
    8. }

    3    测试

     

    四  使用maprequest域对象共享数据

    1 . index.html

    <a th:href="@{/test/map}">测试通过map向请求域共享数据a><br>

     2    TestScopeController

    1. /*4、使用map向请求域共享数据*/
    2. @RequestMapping("/test/map")
    3. public String testMap(Map map){
    4. //org.springframework.validation.support.BindingAwareModelMap
    5. System.out.println(map.getClass().getName());
    6. map.put("testRequestScope", "hello,map");
    7. return "success";
    8. }

    3   测试

    五  使用ModelMaprequest域对象共享数据

    1 . index.html

    <a th:href="@{/test/modelMap}">测试通过ModelMap向请求域共享数据a><br>

     2    TestScopeController

    1. /*3、使用ModelMap向请求域共享数据*/
    2. @RequestMapping("/test/modelMap")
    3. public String testModelMap(ModelMap modelMap){
    4. //org.springframework.validation.support.BindingAwareModelMap
    5. System.out.println(modelMap.getClass().getName());
    6. modelMap.addAttribute("testRequestScope", "hello,ModelMap");
    7. return "success";
    8. }

    3   测试

    六   ModelModelMapMap的关系

    ModelModelMapMap类型的参数其实本质上都是 BindingAwareModelMap 类型的

    输入类型

    System.out.println(modelMap.getClass().getName());

    System.out.println(map.getClass().getName());

    System.out.println(model.getClass().getName());

     

     查看源码BindingAwareModelMap

    按二次Shift

    BindingAwareModelMap extends ExtendedModelMap

    Ctrl+左健

    ExtendedModelMap extends ModelMap

    ModelMap extends LinkedHashMap

    LinkedHashMap  extends HashMap

    总结:

    5、Model和ModelMap和map的关系
    * 其实在底层中,这些类型的形参最终都是通过BindingAwareModelMap创建
    * public class BindingAwareModelMap extends ExtendedModelMap {}
    * public class ExtendedModelMap extends ModelMap implements Model {}
    * public class ModelMap extends LinkedHashMap {}

    七   向session域共享数据

    八   向application域共享数据

    1 . index.html

    1. <a th:href="@{/test/session}">测试向会话域共享数据a><br>
    2. <a th:href="@{/test/application}">测试向应用域共享数据a><br>

    2    TestScopeController

    1. @RequestMapping("/test/session")
    2. public String testSession(HttpSession session){
    3. session.setAttribute("testSessionScope", "hello,session");
    4. return "success";
    5. }
    6. @RequestMapping("/test/application")
    7. public String testApplication(HttpSession session){
    8. ServletContext servletContext = session.getServletContext();
    9. servletContext.setAttribute("testApplicationScope", "hello,application");
    10. return "success";
    11. }

    3 .success.html

    1. <p th:text="${session.testSessionScope}">p>
    2. <p th:text="${application.testApplicationScope}">p>

     4 测试

    现在我们先把网址复制一下 然后 关闭浏览器

    在打开浏览器 粘贴上刚才复制的网址 

    http://localhost:8080/springMVC/test/application

    会现在这时session的数据没有了  只有application  因为application还没有关闭  

     

     现在我们从新部暑   然后在往seiion中共享一个数据

    现在在重新重启服务器  重新部暑

  • 相关阅读:
    vue3使用富文本编辑器wangEditor-v5(未使用composition api写法)
    泰迪云课堂大数据培训平台业务介绍
    【算法优选】 前缀和专题——壹
    python、django版本选型、linux下python安装
    gabse8a 认证培训课后题(二)
    BSN专网+医疗保险:MediConCen与BSN达成战略合作,提升理赔效率
    Go中的泛型和反射以及序列化
    全面指南:如何发布自己的npm插件包
    LeetCode_模拟_中等_498.对角线遍历
    淘宝/天猫API:item_search_jupage-天天特价
  • 原文地址:https://blog.csdn.net/m0_59281987/article/details/127914322