Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第1页
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第2页
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第3页
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第4页
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 Java与数据库的连接 3.1 SQL子类型 3.1.1 使用查询命令 3.1.2 使用数据修改命令 3.2 JDBC 3.2.1 什么是JDBC 3.2.2 连接概述 3.2.3 DriverManager 3.3 两个简单的例子 本章小结 nJSP的数据库方面所依赖的是JDBC,而JDBC的强大在于: JDBC可以使Java成为一种能同不均匀的数据库环境打交道的强大工 具,这种不均匀的数据库环境尽管的确差别很大,但是无论是哪一 种关系数据库,从Oracle到DB2到Sybase再到MS SQL Server,有 一点是相同的,那就是SQL语言-结构化查询语言。尽管各个不同的 数据库厂商对SQL做了各自的扩展,如: Oracle的PL-SQL、 Microsoft SQL Server的Transact - SQL、还有SQL语言鼻祖IBM的 DB2 SQL,每一个RDBMS厂商都宣称自己的扩展是最优秀的,然而 ,这些不同的SQL仍然有共同点,他们都基于ANSI SQL 92。 nSQL不是一门特别复杂的语言,不过如果想要学好SQL,特别是 各个不同厂商特有的SQL,仍然需要特别的努力,仅仅讲述SQL中 最基本的语句,本书在第一部分的例子程序中也只会用到最基本的 SQL语句,在第二部分的例子中由于将会使用存储过程,所以会使 用一些扩展的SQL语言,这些扩展将在需要时再进行讲解。 3.1 SQL子类型 SQL语言的子类型包括: n数据处理语言(DML) n数据定义语言(DDL) n数据控制语言(DCL)。 3.1.1 使用查询命令 1SELECT语句 nSELECT无疑是SQL语句中最常用的语句,一 个SELECT语句可以十分简单,也可以十分复杂 ,下面先从最简单的开始: 【例3.1】 在Query Analyzer中选择数据库为Northwind, 然后输入: select * from customers 3.1.1 使用查询命令 (1)使用别名 n数据表中某一列的名称应该是有意义的,但不 幸的是,这仅仅是对某一些人而言,常常有这种 情况:某一位数据库建立者创建的数据库中包含 的列名对他自己来说是有明确意义的,但对另外 一些人来说却是不知所云。解决办法就是在查询 的时候为数据表的某一列建立一个别名 3.1.1 使用查询命令 (2)在查询输出中加入文本 n尽管上面加上别名之后的输出结果让人 容易理解,但仍然不是太明确,在查询输 出中加入文本的方法将可以输出完整的句 子。 3.1.1 使用查询命令 (3) ORDER BY 子句 nORDER BY子句的作用是将输出结果按 照某一列按升序或降序排列,其中,升序 排列的附加命令是ASC,而降序排列的附 加命令是DESC,缺省为升序排列。 3.1.1 使用查询命令 (4)WHERE短语 nWHERE是一个有条件的选择数据的短语 ,它指定只返回那些和WHERE短语重指 定的条件一致的数据。WHERE短语的条 件可以包含关系运算、布尔运算、LIKE、 IN、BETWEEN等等,甚至可以包含其他 的SELECT语句的查询结果。 3.1.1 使用查询命令 1)关系运算。 nSQL语言的关系运算包括:“=”、“”、“ =”、“”。 3.1.1 使用查询命令 2)布尔运算。 SQL语言的布尔运算包括“AND”、“OR”、 “NOT”,即“与”、“或”、“非”三种运算。 3.1.1 使用查询命令 (5)LIKE运算 nLIKE运算的用途是在那些文本类型的数 据中找出某一特定的字符串,加上通配符 的使用,只需学会使用LIKE运算就可以构 造一个简单的搜索引擎了。在LIKE运算中 包含如下两个通配符: n%代表多个字符 n_代表一个字符 3.1.1 使用查询命令 (6)IN运算 nIN运算通过一个预先定义好的值表来限 定所用值的范围,当所给参数和表中的值 匹配时才认为是“真”。 3.1.1 使用查询命令 (7)BETWEEN运算 n和IN运算一样, BETWEEN运算也是限 定所用值的范围,当所给参数和预设的值 匹配时才认为是“真”。不过BETWEEN运算 所限定的方式不是给出一个值表,而是给 出一个最大值和最小值。当数据表中的值 在这个最大和最小值之间(包括最大值和 最小值)时认为是“真”。 3.1.1 使用查询命令 (8)使用函数 n尽管大部分关系数据库系统(RDBMS)都扩 充了可以在SQL中使用的函数,许多数据库系统 还允许用户自己扩充函数,但下面的几个函数总 是可以使用的: nAVG:返回某一组中的值除以该组中值的个数 的和。 nCOUNT:返回一组行或值中行或值的个数。 nMAX:返回一组值中的最大值。 nMIN:返回一组值中的最小值。 3.1.1 使用查询命令 (9)子查询 n子查询的概念在于将一个查询的结果作 为另一个查询的条件 3.1.2 使用数据修改命令 (1)INSERT语句 nINSERT语句在使用时有两种不同的格式。需 要注意的是,INSERT语句假定需要插入数据的 数据表已经用CREATE语句或其他工具建立。 n第一种用法是不列出数据表的各个列名,而按 照数据表建立时的顺序将数据列出: n第二种用法是在数据表的后面按照后面数据需 要插入的列的顺序列出数据表中各个列的名称: 3.1.2 使用数据修改命令 (2)DELETE语句 nDELETE语句的使用是相当简单的,格 式如下: nDELETE FROM 表名条件 n其中条件不是必需的,当没有条件时, 就意味着删除表中的所有记录。 3.1.2 使用数据修改命令 (3)UPDATE语句 nUPDATE语句的作用是将数据库中某一 条记录的某一个记录域更新,语句格式如 下: nUPDATE 数据表SET 列名=新数据条件 n和DELETE语句一样,这里的条件也可 以是没有的,如果没有条件,那么数据表 中的每一条记录都将被更新。 3.2 JDBC n本节将在上节讲述的SQL语言的基础上 介绍JDBC,JDBC使得在Java程序中可以 轻松地操纵数据库:从企业级的Oracle、 Sybase、DB2到最简单的Access、 MySQL。在JSP中,就是利用JDBC来访 问数据库的。 3.2.1 什么是JDBC nJDBC是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类 和接口组成。 nJDBC为工具/数据库开发人员提供了一 个标准API,使他们能够用纯Java API 来 编写数据库应用程序。有了JDBC,向各种 关系数据库发送SQL语句就是一件很容易 的事。 3.2.1 什么是JDBC JDBC的用途 n简单地说,JDBC 可做三件事: n与数据库建立连接。 n发送SQL 语句。 n处理结果。 3.2.1 什么是JDBC JDBC是一种低级API,是高级API的基础 nJDBC是个”低级”接口,就是说,它用于 直接调用SQL命令。 n在这方面它的功能极佳,并比其他的数 据库连接API更易于使用,但它同时也被设 计为一种基础接口,在它之上可以建立高 级接口和工具。 3.2.1 什么是JDBC JDBC与ODBC 和其他API的比较 n目前,ODBC(开放式数据库连接)API 可能是使用最广的、用于访问关系数据库 的编程接口。 n它能在几乎所有平台上连接几乎所有的 数据库。 3.2.1 什么是JDBC 两层模型和三层模型 n在两层模型中,Java applet或应用程序将直接 与数据库进行对话。这将需要一个JDBC驱动程 序来与所访问的特定数据库管理系统进行通信。 n在三层模型中,命令先是被发送到服务的“中间 层”,然后由它将SQL语句发送给数据库。数据库 对SQL语句进行处理并将结果送回到中间层,中 间层再将结果送回给用户。 3.2.1 什么是JDBC 5SQL的一致性 n结构化查询语言(SQL)是访问关系数 据库的标准语言。 n其困难之处在于:虽然大多数的DBMS (数据库管理系统)对其基本功能都使用 了标准形式的SQL,但它们却不符合最近 为更高级的功能定义的标准SQL语法或语 义。 3.2.2 连接概述 n1打开连接 n2一般用法的URL n3JDBC URL n4ODBC子协议 n5注册子协议 n6发送SQL 语句 n7事务 3.2.3 DriverManager n1跟踪可用驱动程序 n2建立连接 3.3 两个简单的例子 【例3.15】 n在这个例子中,将利用JDK自带的JDBC -ODBC桥驱动程序查询一个Microsoft SQL Server 7.0自带的例子数据库,并将得到的 结果在屏幕上显示出来。 3.3 两个简单的例子 1建立ODBC数据源 n在Windows系统的控制面版中,选择“数据源(ODBC )”,如果使用Windows 2000,那么将在“管理工具”中选 择。在系统DSN中,选择“添加”。 n然后,建立一个名为Northwind的数据源,并且设定数 据源为需要使用的SQL Server,这里假设为本地SQL Server数据源,如果读者的数据源不在本地,请自行修 改。 n然后,在接下来几步中设定缺省数据库为Northwind, 然后点击“完成”,建立ODBC数据源。 本章小结 本章主要讲述了如下主要内容: nSQL介绍 n查询命令 n数据修改命令 nJDBC的概念及使用 第4章JSP技术 4.1 通用的语法规则 4.1.1 元素的语法规则 4.1.2 JSP中的相对路径和绝对路径 4.2 注释 4.3 指令 4.3.1 page指令 4.3.2 Include指令 4.4 内置对象 4.4.1 request对象 4.4.2 Response对象 4.4.3 Session对象 4.4.4 aplication对象 4.4.5 Out对象 4.4.6 Cookie对象 第4章JSP技术 4.5 脚本元素 4.5.1 声明 4.5.2 表达式 4.5.3 脚本代码 4.6 动作 4.6.1 id和scope属性 4.6.2 标准动作 4.7 JSP开发平台的建立:Tomcat 4.7.1 Tomcat的安装和直接使用 4.7.2 Tomcat和IIS的配合 4.7.3 在Tomcat中建立新的Web应用程序 4.8 Tomcat JSP经典配置实例 本章小结 n本章将详细介绍JSP的语法和语义。如果读者接触过 ASP或PHP,将会发现JSP的语法稍显复杂;另一方面, 如果读者有Java语言程序设计的经验,就会觉得JSP相 当简单,其实,作为J2EE的成员,JSP本来就已经成为 Java的一部分了。 n在JSP中,主要包含以下内容: n指令。指令提供该页的全局信息,例如,重要的状态 ,错误处理,是否是session的一部分等。 n声明。页面范围的变量和方法的声明。 n脚本。嵌入页面内Java代码。 n表达式。把表达式变成string型以便于包含在页面的输 出中。 4.1 通用的语法规则 nJSP的页面是由许多的“元素”组成的,本 节描述的语法规则对于这些“元素”都是成立 的,所以称之为“通用”的语法规则,也就是 这些元素共有的特性。 4.1.1 元素的语法规则 n每一个JSP页面都应该可以转换为等价 的XML页面。 nJSP元素的属性也和XML中定义的属性 遵从同样的原则,JSP页面的属性值一定 要使用引号括起来,双引号(”)和单引号 ()都可以使用。 n作为替代,也可以使用 给定主机名host,返回该主机名对应的IP地址 。 n(2)public static InetAddress getAllByName(String hostname); 给定主机名host,返回与该主机名对应的所有 IP地址。 n(3)public static InetAddress getLocalHost(); 返回本机的IP地址。 【例5.1】获取IP本地主机的IP地址 import .*; import java.io.*; public class GetLocalHost public static void main(String args) InetAddress Ip=null; try Ip=InetAddress.getLocalHost(); catch(UnknownHostException e) System.out.println(“getLocalHost()=“+Ip); 程序说明 n在调用getByName()、getAllByName() 和getLocalHost()时,若找不到主机则会抛 出异常UnknownHostException,因此在调 用这些方法的语句通常入在try块中,并通 过catch块捕捉异常。 InetAddress类的其它方法(一) n使用InetAddress类的以下两个方法,可 将主机名或IP地址作为字符串返回: n(1)public String getHostName(); 将主机名作为字符串返回。 n(2)public String getHostAddress(); 将IP地址作为字符串返回。 【例5.2】获取指定IP地址 import .*; public class getHostIp public static void main(String args) try InetAddress Ip=InetAddress.getByName(““); System.out.println(“:IP=“+Ip.getHo stAddress(); catch(UnknownHostException e) InetAddress类的其它方法(二) n(1)public boolean isMulticastAddress(); 功能:判断该IP是否为多址发送地址。 n(2)public byte getAddress(); 功能:返回IP地址的原始形式。结果按网 络字节顺序排序:地址的最高位字节在 getAddress()0 中。 n(3)public int hashCode(); 功能:返回该IP 地址的散列码值。覆盖 Object类中的hashCode()。 InetAddress类的其它方法(三) n(4)public boolean equals(Object obj); 功能:比较该对象和指定对象。当且仅当 参数不为null且它与该对象表示同一IP地址 时结果为真。覆盖Object类中的equals()。 n(5)public String toString(); 功能:返回该IP 地址的字符串表示。覆盖 Object类中的toString()。 5.3应用举例 nHostLookup,用来查询域名服务器。 nHostLookup可以完成主机名与IP地址之间的转 换。它有两种工作方式:命令行和交互式。若在 命令行输入了主机名或IP地址,则HostLookup显 示相应的IP地址或主机名。若不在命令行中输入 主机名或IP地址,HostLookup则进入交互式方式 。 【例5.3】HostLookup.java 【例5.3】HostLookup.java import .*; import java.io.*; public class HostLookup public static void main(String args) if(args.length0) for(int i=0;i:/:/# nprotocol:传输协议。指明获取资源后使用的传输协议, 如HTTP、FTP、FILE等。 nhostname:主机名。指定资源所在的计算机,可以是IP 地址,也可以是主机名或域名。 nport:端口号。用来区分不同的网络服务。一个 URL 可 以有选择地指定一个“端口”,它就是 TCP 连接所用的远程 主机的端口号。 如果不指定端口,将使用该协议的缺省值 。如HTTP服务的默认端口号为80。可选。 nfilename:文件名。包括该文件的完整路径。是主机上 能访问到的目录或文件。 nanchor:标记。指定文件内的有特定标记的位置。可选 。 6.2 URL类及其应用 n为了表示URL,Java网络包中定 义了URL类,它提供了描述WWW资源特 征及读取其内容的方法。 1URL类的构造方法 n(1)public URL(String protocol,String host,int port,String file) throws MalformedURLException n功能:通过指定协议(protocol)、主机名(host)、端 口号(port)和路径(file)创建 URL 对象。 n参数: protocol:要使用的协议名称。 host:主机名称。可用主机名或域名表示。 port:主机端口号。为 -1 表示URL使用协议的默认端口 。 file:主机上的文件 当指定了未知协议时抛出MalformedURLException 异常 n(2)public URL(String protocol,String host, String file) throws MalformedURLException n功能:通过指定协议(protocol)、主机名(host)、端口 号(port)和路径(file)创建 URL 对象,使用指定协议的默 认端口。 n参数: protocol:要使用的协议名称。 host:主机名称。可用主机名或域名表示。 file:主机上的文件 当指定了未知协议时抛出MalformedURLException 异常。 n(3)public URL(String protocol,String host,int port,String file, URLStreamHandler handler) throws MalformedURLException n功能:通过指定protocol、host、port、file 和 handler 创建 URL 对象。 n参数: protocol:要使用的协议名称。 host:主机名称。可用主机名或域名表示。 port:主机端口号。若为-1表示URL使用协议的默认端口。 file:主机上的文件。 handler:URL的流处理程序。 当指定了未知协议时抛出MalformedURLException 异常。 当安全管理器存在并且其checkPermission方法不允许显式指定 流处理程序时抛出SecurityException异常。 n(4)public URL(String spec) throws MalformedURLException n功能:通过代表URL的字符串创建URL对 象。 n参数: spec:将作为URL解析的字符串。 如果字符串指定未知协议时抛出 MalformedURLException异常。 n(5)public URL(URL context,String spec) throws MalformedURLException n功能:通过URL对象和相地此URL对象 的部分来创建URL对象。 n参数: context:要在其中解析规范的上下文。 spec:将作为 URL 解析的字符串。 如果未指定任何协议,或者找到了未知协 议时抛出MalformedURLException异常。 n(6)public URL(URL context,String spec, URLStreamHandler handler)throws MalformedURLException n功能:通过URL对象和相地此URL对象的部分来创建 URL对象。同时设定此URL对象的流处理程序。 n参数: context:要在其中解析规范的上下文。 spec:将作为URL解析的字符串。 handler:URL的流处理程序。 如果未指定任何协议,或者找到了未知协议时抛出 MalformedURLException异常。如果安全管理器存在并且 其checkPermission方法不允许指定流处理程序时抛出 SecurityException异常。 2URL类的常用方法 n(1)public boolean equals(Object obj) 比较两个URL。当且仅当参数不为null且与该对 象描述的是同一URL对象时,结果为true。 如果两个URL使用相同的协议,访问相同的主机 ,在主机上使用相同的端口号和主机上相同文件 ,则它们相等。 n(2)public final Object getContent() throws IOException 返回URL的内容。 n(3)public String getFile() 返回URL的文件名。 n(4)public String getHost() 返回URL的主机名。对于“file”协议,这是一个空串。 n(5)public int getPort() 返回URL的端口号。 n(6)public String getProtocol() 返回URL的协议名。 n(7)public String getRef() 返回URL的标记。 n(8)public int hashCode() 为散列表索引生成一个合适的整数。 n(9)public URLConnection openConnection() throws IOException 返回一个URLConnection 对象,该对象代表URL对 象连接的网络资源。 n(10)public final InputStream openStream() throws IOException 打开一个到URL对象指向的网络资源的输入流,通 过这个流,可以读取这个网络资源的内容。 n(11)protected void set(String protocol,String host,int port,String file, String ref) 设置URL的字段。 n(12)public String toString() 构造 URL 的字符串表示。通过调用该对象的流 协议处理程序的 toExternalForm 方法来生成该 字符串。 n(13)public boolean sameFile(URL other) 比较两个URL,如果此URL和other参数相等,则 返回true,不考虑标记部分。 nURL对象创建后,即可通过它访问指定的 WWW资源。这时需调用URL类的OpenStream() 方法与指定的URL建立连接并返回一个 InputStream类的对象,这样访问WWW资源的操 作就转变为I/O操作,然后即可用字节流的方式读 取WWW资源数据。 【例6.1】利用URL类获取网络 资源 import .URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class TestURL public String getContent(String strUrl) /返回字符串,错误则返回“error open url“ try URL url=new URL(strUrl); BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(); String s=“; StringBuffer sb=new StringBuffer(“); while(s=br.readLine()!=null) sb.append(s+“rn“); br.close(); return sb.toString(); catch(Exception e) return “error open url“ + strUrl; public static void main(String args) TestURL ou=new TestURL();/具体使用方法 System.out.println(ou.getContent(“/se rvices/index.jsp “); 6.3 URLConnection类及其应用 n利用OpenStream()以字节流的方法读取 资源数据。 n但在实际应用中,只能读取数据是不够 的,在很多情况下都需要将一些信息发送 到服务器上去,实现同WWW资源的双向 通信。URLConnection类就是用来解决这 一问题的。 nURLConnection类在包中。 nURLConnection类是以HTTP协议为中心的 类,用来建立Java程序和指定的URL的网络 通信连接。当与一个URL建立连接时,首先 创建一个URL对象,然后调用URL对象的 OpenConnection()方法生成对应的 URLConnection对象,此时就与指定的URL 建立了通信连接。 1URLConnection类的构造方法 nURLConnection类只有一个构造方法, 原型如下: protected URLConnection(URL url) n构造一到指定URL的URL连接。 该方法 为受保护的,无法通过new操作符创建 URLConnection类的实例,而应通过调用 URL对象的OpenConnection()方法返回一 个URLConnection类的实例。 2URLConnection类常用方法 n(1)public abstract void connect() throws IOException 在客户端与服务器之间建立连接。若连接 无法建立,则抛出IOException异常。 n(2)public URL getURL() 返回URLConnection对象指向的URL值。 n(3)public int getContentLength() 返回连接URL引用资源的内容长度,如果 内容长度未知,则返回-1。 n(4)public String getContentType() 返回URL 引用资源的内容类型,若未知则为null。 n(5)public String getContentEncoding() 返回URL引用资源的内容编码,若未知则为 null。 n(6)public long getExpiration() 返回URL引用资源的截止日期,若未知则为0。该 值为从格林威治时间1970年1月1日以来所经过的秒 数。 n(7)public long getDate() 返回URL引用的资源的发送日期,若未知则为0。 该值为从格林威治时间1970年1月1日以来所经过的 秒数。 n(8)public long getLastModified() 返回由URLConnection引用的资源的最后修改日期 ,若未知则为0。 n(9)public String getHeaderField(String name) 返回命名报头域的值,若该报头中无该域则为null 。 n(10)public Object getContent() throws IOException 返回URLConnection对象指向的URL的内容。若获取 内容时发生I/O错误则抛出IOException异常。 n(11)public InputStream getInputStream() throws IOException 返回从该打开的连接读取的输入流。若生成输入流时 发生I/O错误则抛出 IOException异常。 n(12)public OutputStream getOutputStream() throws IOException 返回写到该连接的输出流。若生成输出流时发生I/O错 误则抛出 IOException异常。 n(13)public String toString() 返回该URLConnection 的字符串表示。 n(14)public void setDoInput(boolean doInput) 设置URLConnection的doInput域为指定的值。 URLConnection即可用于输入又可用于输出。 DoInput取值为true时为输入,取值为false时为 输出。 n(15)public boolean getDoInput() 返回URLConnection的doInput域的值。 n(16)public void setDoOutput(boolean doOutput) 设置URLConnection 的 doOutput 域为指定的值 。URLConnection即可用于输入又可用于输出。 DoOutput取值为true时为输出,取值为false时为 输入。 n(17)public boolean getDoOutput() 返回URLConnection的doOutput域的值。 【例6.2】URLConnection的使用 import java.io.*; import .*; public class urlcapp public static void main(String args) throws Exception URL url=new URL(“/zh_CN/“); URLConnection conn=url.openConnection(); conn.setDoOutput(true); PrintStream psout=new PrintStream(conn.getOutputStream(); psout.println(“URLConnection send!“); psout.close(); DataInputStream dis=new DataInputStream(conn.getInputStream(); String data; conn.setDoOutput(false); while(data=dis.readLine()!=null) System.out.println(data); dis.close(); 实现步骤 n利用URLConnection类对象向URL对象发 送服务请求进行通信时,具体实现步骤如下 (以Java程序与服务器端的CGI交互为例) : n(1)创建URL对象; n(2)调用URL对象的openConnection()方 法打开一个到URL的连接,返回相应的 URLConnection对象; n(3)从URLConnection对象获取其连接的输 出流,这个输出流就是连接到服务器上CGI的标 准输入流,通过这个输出流向服务器发送数据; n(4)向这个输出流中写入数据,写入结束后关 闭输出流; n(5)从URLConnection对象获取其连接的输 入流,这个输入流就是连接到服务器上CGI的标 准输出流,通过这个输入流读取服务器发送的数 据,最后关闭输入流。 6.4 应用举例 n将通过编写一个小型浏览器来熟悉掌握 有关URL类和URLConnection类的应用。 n程序分析: n本程序中使用了Java扩展包java.swing提 供的JEditorPane类,创建该类对象后,通 过调用该类的setPage()方法显示指定网页 的内容。在JEditorPane对象不能编辑的情 况下,它能生成并响应超链

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论