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

news2024/11/24 4:04:54

目录

一  使用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域对象共享数据

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

二  使用ModelAndViewrequest域对象共享数据

1   新建TestScopeController

2  index.html

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

3  书写TestScopeController


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


@Controller
public class TestScopeController {

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

4  success.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1>success.html</h1>
<p th:text="${testRequestScope}"></p>
</body>
</html>

5   测试 

 

 总结 :

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

三  使用Modelrequest域对象共享数据

1  index.html

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

 2    TestScopeController

    /* 2、使用Model向请求域共享数据 */

    @RequestMapping("/test/model")
    public String testModel(Model model){
        //org.springframework.validation.support.BindingAwareModelMap
        System.out.println(model.getClass().getName());
        model.addAttribute("testRequestScope", "hello,Model");
        return "success";
    }

3    测试

 

四  使用maprequest域对象共享数据

1 . index.html

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

 2    TestScopeController

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

3   测试

五  使用ModelMaprequest域对象共享数据

1 . index.html

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

 2    TestScopeController

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

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<String, Object>

LinkedHashMap<K,V>  extends HashMap<K,V>

总结:

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

七   向session域共享数据

八   向application域共享数据

1 . index.html

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

2    TestScopeController

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

    @RequestMapping("/test/application")
    public String testApplication(HttpSession session){
        ServletContext servletContext = session.getServletContext();
        servletContext.setAttribute("testApplicationScope", "hello,application");
        return "success";
    }

3 .success.html

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

 4 测试

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

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

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

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

 

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/14331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTNL---表格标签和列表标签

一、表格标签 对于表格我想就不用做很多细说了吧&#xff0c;Excel大家应该都知道。HTML中的表格不是用来布局页面的而是用来展示数据的。 1&#xff1a;表格标签基本使用 <table> <tr><th>姓名</th> <th>年龄</th> <td>第一</…

【Note5】macvlan,spi,rsyslog,sol

文章目录1.BMC虚拟多网口&#xff1a;macvlan是kernel提供的一种网卡虚拟化技术&#xff0c;可将网卡&#xff08;不一定是真实的物理网卡&#xff09;虚拟出多个接口&#xff0c;这网卡称为master或父接口&#xff0c;这些虚拟接口和外面环境通信都是通过父接口1.1 bridge&…

RESTful 接口设计拓展,接口设计注意事项,注解的简化

文章目录RESTful 接口设计拓展1.多参数传递2.URL拓展3.RESTful接口注意事项4.注解的简化RESTful 接口设计拓展 1.多参数传递 /*** 获取某一个员工&#xff0c;多参数* 1. 请求路径--确认资源--员工--/employees* 2. 请求方法--get* 3. 请求参数--id&#xff0c;name,age* 4. …

Python接口测试之requests详介与实战

目录 requests介绍 1、简述发展史 2、安装 3、官方自评 4、requests支持的请求类型 4、requests的参数与返回 requests接口请求Python脚本实战 1、GET接口实战 2、POST接口实战 3、PUT接口实战 4、DELETE接口实战 requests介绍 Http网络接口请求库 1、简述发展史 …

设计师找灵感就上这几个网站。

推荐5个设计师必备的设计灵感网站&#xff0c;希望对你有帮助&#xff01; 1、pinterest&#xff08;梯子&#xff09; https://www.pinterest.es/Pinterest是以瀑布流的方式来展示图片&#xff0c;在算法上也会根据你的浏览和识别的图片去做推算。 所以Pinterest是需要“经营”…

网络编程概述

Java是 Internet 上的语言&#xff0c;它从语言级上提供了对网络应用程 序的支持&#xff0c;程序员能够很容易开发常见的网络应用程序。 Java提供的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;联网的底层 细节被隐藏在 Java 的本机安装系统里&#xff0c;由 JVM …

权限系统设计

背景 目前只做了用户账号间的数据隔离。存在情况&#xff0c;同一个项目里不同人创建不同的资源&#xff0c;项目里的成员都可以看得到&#xff0c;同时也不能互相随便修改数据。所以需要一些组的权限控制。 1.模型和模型荚是公用的&#xff0c;没有做用户区分&#xff0c;也没…

学计算机的可以做哪些适合自己的兼职?

如果你在做以下的任意一种兼职&#xff0c;我建议你立刻停止&#xff01; 1.单纯体力劳动的兼职 像是发传单、发问卷、送外卖这类兼职只能在短期内提升你的“8小时外收入”的兼职&#xff0c;纯粹是靠时间和体力来换钱&#xff0c;性价比很低&#xff0c;而且不能通过兼职提升…

指定字符串中的一部分将原来的字符串拆分成三部分partition()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 指定字符串中的一部分 将原来的字符串拆分成三部分 partition()函数 选择题 对于以下python代码表述错误的一项是? Str"12345" print("【显示】Str",Str) print("…

Vue2【前端路由的概念与原理、vue-router 的基本用法、vue-router 的常见用法、后台管理案例】

文章目录前端路由的概念与原理1. 什么是路由3. SPA 与前端路由4. 什么是前端路由5. 前端路由的工作方式6. 实现简易的前端路由步骤1&#xff1a;通过 **\<component\>** 标签&#xff0c;结合 **comName** 动态渲染组件。示例代码如下&#xff1a;步骤2&#xff1a;在 Ap…

Xcode Cloud

一、使用Xcode Cloud 的要求 &#xff08;1&#xff09;开发者账户要求 已加入Apple Developer Program向xcode加入Apple IDApp Store Connect上有app 记录或者可以创建一个app记录 &#xff08;2&#xff09;Project和workspace要求 Project或者workspace使用Xcode项目使用…

JavaScript基础语法

JavaScript基础语法 文章目录JavaScript基础语法1.JavaScript的基本认知1.1 JS的介绍与组成1.2 JS代码使用格式2.JavaScript的注释与输入输出语句2.1 JS的注释方法2.2 JS的输入输出语句3.JavaScript的变量3.1 JS的变量初始化3.2 JS的声明变量特殊情况3.3 JS的变量命名规则4.Jav…

Windows版本Anaconda安装教程

1、点击安装包&#xff0c;右键-以管理员身份运行安装文件&#xff0c;如图所示&#xff1a; 2、直接点击next即可 3、接着进入到许可协议的界面&#xff0c;这里点击I agree选项&#xff0c;也就是我同意的意思。 4、接着进入到用户选择的界面&#xff0c;选择all users选项&a…

面试官的灵魂质问—什么是转发与重定向

文章目录 文章目录文章目录[toc]一、什么是HttpServletRequest、HttpServletReSponse&#xff1f;二、Servlet中HttpServletRequest[源码](https://so.csdn.net/so/search?q源码&spm1001.2101.3001.7020)分析获取客户端传递的参数请求转发三、Servlet中HttpServletReSpons…

HTML网页设计结课作业——基于HTML+CSS仿学校官网页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【保姆级】新机器部署Nacos

1、登录服务器&#xff0c;如果非root用户则切root用户 sudo su - 2、在/usr/tmp目录上传nacos安装包 3、将安装包移到/usr/local/目录 mv nacos-server-2.0.3.tar.gz /usr/local/ 4、解压 tar -zxvf nacos-server-2.0.3.tar.gz 5、创建nacos数据库&#xff0c;执行官网SQL建…

vc中调用matlab生成的动态库

开发环境&#xff1a; vs2010 matlab r2016a 步骤一&#xff1a;matlab中生成动态库 创建文本文件 D:\matlabTest\myadd.m&#xff0c;文件内容参看下面代码部分。注意&#xff1a;如果把myadd.m文件直接放在d盘根目录下&#xff0c;matlab中编译生成动态库时&#xff0c;会…

JavaScript--跟随pink老师视频学习版 (2022)

JavaScript一、JavaScript简介1.什么是JavaScript2.JavaScript用途3.浏览器执行JavaScript简介3.JavaScript组成1.ECMAScript2.DOM3.BOM4.JavaScript代码位置1.行内2.内嵌3.外部引入5.JavaScript输入输出语句二、JavaScript变量1.什么是变量2.变量使用3.变量命名规范三、数据类…

DBCO-NH2,DBCO-Amine 实验室 杂氮二苯并环辛炔-胺 1255942-06-3

DBCO(二苯并环辛炔) 的羧基和琥珀酰亚胺酯衍生物&#xff0c;可与带有胺基的生化小分子形成稳定的酰胺键连接。 胺官能团的环辛炔衍生物。环辛炔可用于菌株促进的无铜叠氮化物-炔烃环加成反应。该二苯并环辛炔可在不需要Cu&#xff08;I&#xff09;催化剂的情况下&#xff0c…

TCP/IP网络编程(10) IO函数

在Linux下&#xff0c;一般使用read & write函数完成数据IO&#xff0c;因为Linux下的套接字&#xff0c;可视为文件&#xff0c;其操作方式与文件类似&#xff0c;当套接字分配之后&#xff0c;会为其分配对应的文件描述符。在Windows下&#xff0c;则需要使用recv & …