




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019年7月26日,第 4 章 Web应用基础知识 之 ASP动态页面技术,2019年7月26日,4.3.1. 静态网页与动态网页,由于HTML将数据内容与表现混为一体,其可读性和可修改性差,数据可检索性差,影响网络信息传送和共享。 XML实现了内容与表现的分离,方便信息的维护与检索,也使得用户之间数据的交换更加方便,可重用性更强。 但从本质上说,基于XML文档的页面仍然是“静态”的,不易实现客户端与服务器的双向交流,也不能实时查询业务系统中的商业信息,于是提出了动态页面的要求。,2019年7月26日,4.3.1. 静态网页与动态网页,动态网页是与静态网页相对应的,这里说的“动态”,与网页上的各种动画、滚动字幕等视觉上的动态效果没有直接关系,动态网页可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式。 那么什么是动态网页呢?动态页面必须满足以下条件: 自动更新,即无须更新HTML文档,系统会根据待显示的内容和客户端的不同请求动态地生成新的页面。 交互性,即网页会根据用户的要求和选择而动态改变和响应,并且客户端能与服务器进行双向交流。,2019年7月26日,4.3.1. 静态网页与动态网页,从浏览者的角度来看,无论是动态网页还是静态网页,都可以展示基本的文字和图片信息,但从其开发、维护及信息显示与获取方式的角度来看就有很大的差别,动态网页一般具有如下特征: 动态网页以数据库技术为基础,可以大大降低网站维护的工作量。 动态网页技术可以实现客户端与服务器的双向交流,如用户注册、用户登录、在线调查、用户管理、订单管理等等。 动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才根据用户请求动态地生成并返回一个完整的页面。,2019年7月26日,4.3.1. 静态网页与动态网页,动态页面实现的技术方法有多种形式,也经过了几个不同的阶段。 最早的动态页面实现技术是DHTML (Dynamic HTML,即:动态HTML),DHTML是一种通过各种技术的综合应用而得以实现的概念,这些技术包括Java Script、VBScript、DOM (Document Object Model文档对象模块)和CSS (Cascading Style Sheets样式表)等。 严格意思上说DHTML只是动态生成或改变客户端的显示方式,而不能动态改变显示内容,因此,并不是完整意义的动态页面技术。,2019年7月26日,4.3.1. 静态网页与动态网页,真正让用户在浏览器界面中通过互联网查询Web数据库的资料,更新或删除Web 服务器上的信息,就必然涉及到对数据库的操作,常用的技术方法主要有: CGI(Common Gateway Interface,通用网关接口)的传统方式。 IDC(Internet Database Connector,互联网数据库连接),它实际上 是一个包含于IIS中的应用程序。 高级数据库连接器ADC(Advanced Data Connector。 ADO(ActiveX Data Object,微软提供的一种新的数据访问模型)。 ADO具有容易使用、开发执行快速、消耗系统资源较少,和占用磁盘空间小等优点,是Web数据库应用的最佳选择。,2019年7月26日,4.3.3. ASP文件结构,ASP文件是后缀名为.asp的文本文件,在ASP文件中包含HTML标记和ASP脚本命令,ASP脚本命令放在ASP界定符中。脚本命名(Script)可以是脚本语言、ASP内置对象和ADO对象。默认情况下ASP主脚本语言是VBScript,也可以在文件的最上面加上一行加以说明来设置脚本语言: 与HTML页面类似,ASP页面文件也是由标识组成的文本文件,主体还是HTML代码,其区别是使用来表示一个ASP的脚本语言的开始和结尾。其格式如下: ASP的代码可以出现在一个HTML页的任何位置。 可以形象化地说,ASP是用HTML标识+脚本语言+asp内置对象及组件的混合的活动页面设计语言。,2019年7月26日,4.3.4. ASP页面的运行环境,下面我们来可以建立我们的第一个ASP页面,在记事本中输入: 并保存为Times.asp,一个简单的ASP页面就建立成功了,那么如何运行它呢? 现在,你的计算机既是服务器端,又是客户端。IIS缺省的访问目录(主目录)是:C:Inetpubwwwroot,如果你的ASP页面文件放在该目录,就可以直接在浏览器的地址栏输入: http:/localhost/Times.asp 要从主目录以外的其他目录中进行发布,就必须创建虚拟目录 。 Times.asp,2019年7月26日,4.3.4. ASP页面的运行环境,运行结果如下所示:,2019年7月26日,4.3.5. VBScript语法简介,ASP文件是由HTML标签、脚本语言命令和内置对象命令所构成。 脚本语言可以是VBScript或JavaScript语言,默认的是VBScript。VBScript或JavaScript 对ASP页面设计是必不可少的。 VBScript语句是一种基于VB的脚本语言,是Visual Basic语言的简集,主要用于Web服务器端的程序开发,它是一种简化的语言,其语法逻辑是非常容易学习。 在HTML中,VBScript脚本语句必须放在之间。格式如下: ,2019年7月26日,4.3.5. VBScript语法简介,VBScript 只有一种数据类型,称为Variant。 Variant将包含的数值信息类型称为子类型。 可将所需的数据放进Variant中,Variant会按照最适用于其包含的数据的方式进行操作。 可以使用转换函数来转换数据的子类型,也可使用 VarType 函数返回数据的Variant的子类型。Variant 包含的数据子类型如表4.3所示。,VBScript中的数据类型,2019年7月26日,4.3.5. VBScript语法简介,2019年7月26日,4.3.5. VBScript语法简介,在 VBScript 中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是 Variant。 声明变量的方式是使用 Dim 语句在 Script 中显式声明变量,声明多个变量时,使用逗号分隔变量。例如: Dim Top, Bottom, Left, Right VBScript变量的命名规则很简单,主要有: 第一个字符必须是字母。 长度不能超过 255 个字符。 在被声明的作用域内必须唯一。,VBScript中的变量,2019年7月26日,4.3.5. VBScript语法简介,在VBScript中也可以声明和使用在数组变量,其索引号是从0开始,因此,最后一个元素的索引号等于总数组元素减去1。也可以在声明时不指定元素的个数来声明动态数组。例如: Dim MyArray1(10) /声明一个10个元素的数组,索引号为 09 Dim DyArray() /声明一个动态数组 除变量外,也可以使用Const语句在 VBScript 中创建用户自定义常数。例如: Const MyString = “这是一个字符串“ Const MyAge = 25,2019年7月26日,4.3.5. VBScript语法简介,VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。 运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。 当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。 所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。运算符的优先级如表4.4所示。,运算符,2019年7月26日,4.3.5. VBScript语法简介,当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。 字符串连接 (&) 运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。Is 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。,2019年7月26日,4.3.5. VBScript语法简介,VBScript语言也包括顺序、条件分支和循环3种流程控制结构。 使用条件分支语句和循环语句可以控制 Script 的流程; 使用条件语句可以根据不同的状态执行不同的命令或命令集合; 使用循环语句可以实现重复操作的VBScript代码。 条件分支结构 在VBScript中,条件分支语句有IfThenElse语句和Select Case语句两种形式,其格式分别如下: If 条件1 Then Elseif 条件2 Then Else End If,VBScript的控制流程语句,2019年7月26日,4.3.5. VBScript语法简介,Select Case 语句提供的功能与 IfThenElse 语句类似,但是可以使代码更加简练易读。其格式为: Select Case 表达式 Case “表达式值1“ Case “表达式值2“ Case “表达式值3“ Case Else End Select,2019年7月26日,4.3.5. VBScript语法简介,循环结构 循环用于重复执行一组语句。循环可分为3类: 一类在条件变为 True 之前重复执行语句; 一类在条件变为 False 之前重复执行语句; 另一类按照指定的次数重复执行语句。 VBScript 中的循环结构有以下4种形式。 Do.Loop: 当(或直到)条件为 True 时执行循环体。 While.Wend: 当条件为 True 时执行循环体。 For.Next: 指定循环次数,使用计数器重复运行语句。 For Each.Next: 对于集合中的每项或数组中的每个元素,重复执行循环体。,2019年7月26日,4.3.5. VBScript语法简介,过程与函数都是一组语句的有序集合,其功能也类似,区别在于过程无返回值而函数必须要返回一个值。 程序 4.19 和 程序 4.20 定义了一个过程和一个函数,用户输入一个华氏温度将其转换为摄氏温度。这两个例子分别演示了过程与函数的定义方法。 程序 4.19:一个过程 Sub ConvertTemp() temp = InputBox(“请输入华氏温度。“, 1) MsgBox “温度为 “ & Celsius(temp) & “ 摄氏度。“ End Sub,VBScript的过程与函数,VBScript过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数,如果无任何参数,则 Sub 语句必须包含空括号“()”。,2019年7月26日,4.3.5. VBScript语法简介,例如: ,2019年7月26日,4.3.6. ASP与ADO的连接,ASP的优势就在于能与数据库进行交互,从而实现页面内容的动态更新,这种动态性体现在两个方面: 一是浏览器端显示的页面随着服务器端数据库内容的变化而变化; 二是用户可在客户端更新数据库的内容,即可实现客户端与服务器的双向交流。 一个真正的动态页面或基于Web的系统是离不开数据库的,因为实际应用中,需要使用的数据很多,而且这些数据之间往往还存在关联关系,利用数据库来管理这些数据,可以方便地实现数据的查询和更新。ASP页面与数据库的交互是通过ADO来实现的 。,2019年7月26日,4.3.6. ASP与ADO的连接,ADO(ActiveX Data Object)是一组优化的访问数据库的专用对象集,它为ASP提供了完整的数据库解决方案,它作用在服务器端,通过执行SQL命令,用户通过客户端浏览器可对服务器端数据库的输入,更新和删除等操作。 ADO主要包括Connection、Command和Recordset三个对象,它们的主要功能如下: Connection对象:负责打开或连接数据库文件; Command对象:对数据库下达行动查询指令,以及执行SQL Server的存储过程; Recordset对象:表示记录的集合,用于存取数据库的内容。,2019年7月26日,4.3.6. ASP与ADO的连接,数据库有很多种,如: Informix、Oracle、SQL Server等等,这里,我将以 SQL Server 数据库为例来说明ASP是如何访问数据库的。 假定有一数据库表asp,用来存储员工的基本信息,其结构如下:,连接数据库,2019年7月26日,4.3.6. ASP与ADO的连接,ADO提供了两种连接数据库的方法。 一是用ODBC产生一个连接,这种连接与任何有ODBC驱动器的数据库兼容; 另一个是用原始OLE DB提供商产生一个连接。 应尽可能用原始OLE DB提供商,因为它提供了对数据更有效的访问,Microsoft正逐步用OLE DB取代ODBC标准,应该仅仅在没有原始OLE DB提供商时使用ODBC。,2019年7月26日,4.3.6. ASP与ADO的连接,下面以OLE DB方式为例说明数据库的连接方法,数据库连接包括两个步骤: 即创建连接数据库的对象 使用该对象连接数据库。 下面的代码是一个SQL Server 数据库的典型的连接方法,其他数据库的连接类似,只是其参数不同。 程序 4.21:conn_ole.asp ,2019年7月26日,4.3.6. ASP与ADO的连接,建立数据库连接后,就可执行SQL命令,即对数据库进行操作,这里要使用到连接对象的一个方法,即Execute命令,使用格式为: Set RS =Conn .Execute( “ Select Col_name From Tab_name Where Condition“) 该语句的作用是将SQL语句的执行结果存储在一个RecordSet中。 然后,可利用数据集合对象Recordset的属性和方法,从集合中读取数据,并显示在页面上。 Recordset对象就是一个存储在内存中表(table) 下面简单介绍数据集合对象Recordset的常用属性与命令,存取数据库的内容,2019年7月26日,4.3.6. ASP与ADO的连接,RecordSets对象的常用命令如下: RS.Fildes.Count / RecordSet中的字段数 RS(i).Name / 第i个字段名 RS(i) / 第i个字段的记录 RS(“Col_name“) / 指定字段的记录 RS.EOF / 是否指向最后一个字段 True or False RS.MoveFirst / 指向第一条记录 RS.MovePrev / 指向前一条记录 RS.MoveNext / 指向后一条记录 RS.MoveLast / 指向最后一条记录 RS.GetRows / 将查询结果存放在数组中,然后再从数组中读取 RS.Properties.Count /得到ADO的Connection或ResultSet的属性总数 RS.Properties(Item).Name /得到ADO的Connection或ResultSet的属性名称 RS.Properties(Item) /得到ADO的Connection或ResultSet的属性值。,2019年7月26日,4.3.6. ASP与ADO的连接,结合Connection对象、Command对象和Recordset对象,连接一个SQL Server数据库,并显示该数据库中asp表的记录的完整程序如下: 程序 4.22:show.asp “ rs.movenext loop rs.close conn.close set rs=nothing set conn=nothing %,该程序的作用是依次读出数据库中的每一条记录并显示到客户端浏览器。,2019年7月26日,4.3.6. ASP与ADO的连接,例子程序 3.2 show_Access.asp (Access数据库连接例子) “ rs.movenext loop rs.close conn.close %,2019年7月26日,4.3.6. ASP与ADO的连接,为了便于处理,我们可以把数据库连接及其他类似的操作的作为一个独立的文本文件 (通常为 .inc .asp .html等文本文件),然后通过#include 来调用这个文件。 #include 命令指示Web服务器将读取被包含文件的全部内容插入到并插入到页面中。 包含文件是一种非常有用的插入HTML段落的技术,它使得相同的代码可以同时在多个页面中使用,提高了代码的复用性。 被包含的文件可具有任何文件扩展名,但建议使用 .inc 扩展名。,包含文件的使用,2019年7月26日,4.3.6. ASP与ADO的连接,#include命令既可用于ASP页面,也可用在HTML页面中,但必须使用 HTML 注释定界符将指令括起来,其使用格式如下: 其中,PathType 指定 FileName文件的路径类型,路径可为以下某种类型: #include 命令的文档所在目录的相对路径。 文件名为Web 站点上虚拟目录的完整虚拟路径。 FileName指定要包含的文件名。FileName 必须包含文件 名扩展,而且必须将文件名用引号 (“) 引起来。,2019年7月26日,4.3.6. ASP与ADO的连接,例如,我们可以将例子程序show.asp中的数据库连接部分分离出来,作为一个独立的文件conn.asp 或 conn.inc。 这样做的好处在于,当数据库的连接参数改变时,不需要修改每个页面文件,只需要修改这个包含文件即可。例子程序conn.inc和例子程序shows.asp分别是包含的文件的定义和调用。 例子程序 conn.inc 定义.inc文件后,在其调用的asp文件中加入: 例如: shows.asp,2019年7月26日,4.3.6. ASP与ADO的连接,上面的shows.asp实现了用ASP技术显示数据库内容的页面,但是这种显示效果不太美观,数据中的信息通常以表格的形式来表现,那么,我们可以用HTML中的来实现。 例子程序table.asp实现了在Asp中用表格显示数据,2019年7月26日,4.3.6. ASP与ADO的连接,程序 4.25:table.asp 姓名毕业学校 “) response.write(“&rs(“cname“)&“) response.write(“&rs(“univ“)&“) response.write(“) rs.movenext loop rs.close conn.close % ,2019年7月26日,4.3.6. ASP与ADO的连接,上面的例子table.asp是显示一个数据库表中的指定内容,如果要显示数据库表中的所有字段,就要用到数据集RecordSet的相关属性来获得其字段数、字段名等信息,然后逐条获取记录并显示。 例子程序tables.asp是以表格的形式来显示一个表格(asp)的所有字段信息。,2019年7月26日,4.3.6. ASP与ADO的连接, “&rs(i).name&“) next % “) for i=0 to rs.fields.count-1 response.write(“&rs(i)&“) next response.write(“) rs.movenext loop rs.close conn.close % ,2019年7月26日,4.3.7 ASP内置对象,ASP提供了可在脚本(Script)中直接使用的内置对象,以便更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息。 ASP包括五个内置对象:Request、Response、Server、Session、Application。 Request对象的主要作用就是在服务器端接受并得到从客户端浏览器提交或上传的信息; Response对象可动态地响应客户端的请求,并将动态生成的响应结果返回给客户端浏览器; Server对象可用来创建服务器对象,控制服务器端脚本的执行的时间等; Application对象与Session对象可以把信息记录在服务器端,在网页结束时保留变量的内容,以备下次使用。ASP内置对象的语法格式为: 对象名. 集合 | 属性 | 方法 ( 变量 ),2019年7月26日,4.3.7 ASP内置对象,使用Request对象可访问任何基于HTTP请求传递的所有信息,包括从HTML表格用POST方法或GE方法传递的参数、cookie和用户认证等,可用此对象读取已输入HTML表单的信息。 Request对象的集合 Request对象的集合主要有如下几种。 Cookies:含有浏览器cookies的值。 Form:含有HTML表单域中的值。 QueryString:含有查询字符串的值。 ServerVariables:含有头和环境变量中的值。,Request 对象,2019年7月26日,4.3.7 ASP内置对象,Request对象的属性 Request.Form (“name”)(index)|. Count。这是接收上一页的信息时,常会用到的一种接收方式。 Form 集合通过使用 post 方法将表单中输入的信息发送到表单元素。其中 name指定集合的表单元素的名称; index 为可选参数,使用该参数可以访问某参数中多个值中的一个,它可以是1 Request.Form(parameter).Count之间的任意整数; Count 是集合中元素的个数。,2019年7月26日,4.3.7 ASP内置对象,例如,程序4.27 提供输入信息的HTML表单页面,并将信息提交到程序 4.28的ASP页接受处理。 程序 4.27:test1.html your name: your pwd: 程序 4.28:submit1.asp your name is: your pwd is:,从test1.html页面接收“yourname”和“yourpwd”的输入值,并通过yourname和yourpwd两个表单元素,将这两个页面进行了关联。在test1.html中动态输入的yourname和yourpwd,在submit1.asp中则进行相应的动态显示。这就是接收、提取并显示信息的全过程。,2019年7月26日,4.3.7 ASP内置对象,如果要动态获取HTML表单中的所有元素的值,则需要使用循环来检索表单中的元素。实现过程如程序 4.29所示。 程序 4.29:submit2.asp : ,该例采用了for循环将HTML页面表单所有的Form标签信息进行接收并显示,当表单页的元素很多时,可以非常快捷地出来结果。,2019年7月26日,4.3.7 ASP内置对象,Request.QueryString (variable)(index)|. Count。 Request.QueryString也可以接收表单的值,表单递交时采用什么方法取决于提交时使用的参数,当采用post参数时就用Request.Form,否则当采用get时就采用Request.QueryString。 其特色在于Request.QueryString能检索并接收HTTP查询字符串中变量的值,而HTTP查询字符串则是由问号 (?) 后的值指定的。通过发送表格或由用户在其浏览器的地址栏中输入查询也可以生成查询字符串。 将程序4.27中的post改为get,相应地将程序 4.28 中的request.form改为Request.QueryString,可达到同样的效果。,2019年7月26日,4.3.7 ASP内置对象,Request.ServerVariables(“xxx”)。 ServerVariables对象包含了服务器的环境变量。可以采用for循环进行遍历,查看所有的服务器环境变量。 程序 4.30:Server1.asp : ,2019年7月26日,4.3.7 ASP内置对象,Response.Write() Response对象中Write方法是使用最频繁的一个了,其作用是将指定的字符串写到当前的 HTTP 输出。Response.Write后面为所显示的信息,书写的字符串信息或者HTML代码标记必须用引号,而ASP本身的函数或变量则不需要。并且,无论字符串信息、HTML标记、函数还是变量之间进行连接都是采用符号“&”。 程序 4.31:Write.asp “) Randomize response.write (“任意数是:“&rnd()&“) %,Response 对象,2019年7月26日,4.3.7 ASP内置对象,Response.End Response对象的End方法使Web服务器停止处理脚本并返回当前结果,文件中剩余的内容将不被处理。 Response.Redirect Redirect 方法是让浏览器立即重定向到程序指定的URL地址。使用格式如下: 例如: ,2019年7月26日,4.3.7 ASP内置对象,ASP对象除了对象方法外,还有对象属性。对象的属性类似于变量,其含义明确、使用简单。这里只列出其主要属性和含义,如表4.7所示。,2019年7月26日,4.3.7 ASP内置对象,Server对象可在服务器上使用不同实体函数,如在时间到达前控制脚本执行的时间。还可用来创建其他对象。该对象的方法主要有如下几种。 CreateObject:创建一个对象实例。 HTMLEncode:将字符串转化为使用特别的HTML字符。 MapPath:把虚拟路径转化成物理路径。 URLEncode:把字符串转化成URL编码的。 CreateObject() Server对象的CreateObject方法用于创建已经注册到服务器上的 AiveX 组件实例。比如前面所讲到的ADO中数据库连。即: Set conn = Server.CreateObject(“ADODB.Connection“) 就用的是该方法。CreateObject方法的语法如下: Server.CreateObje(“Component Name“),Server 对象,2019年7月26日,4.3.7 ASP内置对象,URLEncode() URLEncode 方法可以根据URL规则对字符串进行正确编码。当字符串数据以URL的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。为此,如果希望在发送字符串之前进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽交控集团所属安徽交控石油有限公司招聘16人模拟试卷及1套完整答案详解
- 区域代理独家买卖合同3篇
- 2025年长春急救中心公开招聘编外聘用制工作人员(10人)考前自测高频考点模拟试题及参考答案详解一套
- 2025年上半年四川内江市隆昌市选调120指挥中心人员2人考前自测高频考点模拟试题及答案详解一套
- 2025年福建省龙岩学院继续教育学院招聘3人模拟试卷及答案详解(典优)
- 2025年湖南邵阳市农村产权交易中心有限公司招聘合同制员工模拟试卷附答案详解(完整版)
- 妇产科护士年终工作总结合集15篇
- 2025年数字艺术展览展示空间设计展示技术融合报告
- 2025年工业互联网平台网络隔离技术与物联网设备安全防护融合报告
- 2025年影视行业工业化生产流程与质量控制创新报告
- 2025云南红河红家众服经营管理有限公司社会招聘工作人员8人笔试参考题库附带答案详解
- 2025重庆明德商业保理有限公司招聘1人考试参考试题及答案解析
- 仁怀市中小学校长绩效考核的实施方案a
- 中国工商银行2026年度校园招聘考试参考题库及答案解析
- 2025年气象系统公务员录用考试面试真题模拟试卷(结构化小组)
- 风力发电项目审批流程及要点梳理
- 医院污水站维护方案(3篇)
- 视频监控考核管理办法
- StarterUnit3Wele!SectionB1a1e(教学设计)人教版七年级英语上册
- 快递安全收寄培训课件
- 抖音公会入股合同协议书
评论
0/150
提交评论