Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt

上传人:za****8 文档编号:7179898 上传时间:2020-03-15 格式:PPT 页数:128 大小:340.52KB
返回 下载 相关 举报
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第1页
第1页 / 共128页
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第2页
第2页 / 共128页
Java网络编程技术(数据库、JSP技术、Internet、URL)ppt.ppt_第3页
第3页 / 共128页
点击查看更多>>
资源描述
第3章Java与数据库的连接 3 1SQL子类型3 1 1使用查询命令3 1 2使用数据修改命令3 2JDBC3 2 1什么是JDBC3 2 2连接概述3 2 3DriverManager3 3两个简单的例子本章小结 JSP的数据库方面所依赖的是JDBC 而JDBC的强大在于 JDBC可以使Java成为一种能同不均匀的数据库环境打交道的强大工具 这种不均匀的数据库环境尽管的确差别很大 但是无论是哪一种关系数据库 从Oracle到DB2到Sybase再到MSSQLServer 有一点是相同的 那就是SQL语言 结构化查询语言 尽管各个不同的数据库厂商对SQL做了各自的扩展 如 Oracle的PL SQL MicrosoftSQLServer的Transact SQL 还有SQL语言鼻祖IBM的DB2SQL 每一个RDBMS厂商都宣称自己的扩展是最优秀的 然而 这些不同的SQL仍然有共同点 他们都基于ANSISQL92 SQL不是一门特别复杂的语言 不过如果想要学好SQL 特别是各个不同厂商特有的SQL 仍然需要特别的努力 仅仅讲述SQL中最基本的语句 本书在第一部分的例子程序中也只会用到最基本的SQL语句 在第二部分的例子中由于将会使用存储过程 所以会使用一些扩展的SQL语言 这些扩展将在需要时再进行讲解 3 1SQL子类型 SQL语言的子类型包括 数据处理语言 DML 数据定义语言 DDL 数据控制语言 DCL 3 1 1使用查询命令 1 SELECT语句SELECT无疑是SQL语句中最常用的语句 一个SELECT语句可以十分简单 也可以十分复杂 下面先从最简单的开始 例3 1 在QueryAnalyzer中选择数据库为Northwind 然后输入 select fromcustomers 3 1 1使用查询命令 1 使用别名数据表中某一列的名称应该是有意义的 但不幸的是 这仅仅是对某一些人而言 常常有这种情况 某一位数据库建立者创建的数据库中包含的列名对他自己来说是有明确意义的 但对另外一些人来说却是不知所云 解决办法就是在查询的时候为数据表的某一列建立一个别名 3 1 1使用查询命令 2 在查询输出中加入文本尽管上面加上别名之后的输出结果让人容易理解 但仍然不是太明确 在查询输出中加入文本的方法将可以输出完整的句子 3 1 1使用查询命令 3 ORDERBY子句ORDERBY子句的作用是将输出结果按照某一列按升序或降序排列 其中 升序排列的附加命令是ASC 而降序排列的附加命令是DESC 缺省为升序排列 3 1 1使用查询命令 4 WHERE短语WHERE是一个有条件的选择数据的短语 它指定只返回那些和WHERE短语重指定的条件一致的数据 WHERE短语的条件可以包含关系运算 布尔运算 LIKE IN BETWEEN等等 甚至可以包含其他的SELECT语句的查询结果 3 1 1使用查询命令 1 关系运算 SQL语言的关系运算包括 3 1 1使用查询命令 2 布尔运算 SQL语言的布尔运算包括 AND OR NOT 即 与 或 非 三种运算 3 1 1使用查询命令 5 LIKE运算LIKE运算的用途是在那些文本类型的数据中找出某一特定的字符串 加上通配符的使用 只需学会使用LIKE运算就可以构造一个简单的搜索引擎了 在LIKE运算中包含如下两个通配符 代表多个字符 代表一个字符 3 1 1使用查询命令 6 IN运算IN运算通过一个预先定义好的值表来限定所用值的范围 当所给参数和表中的值匹配时才认为是 真 3 1 1使用查询命令 7 BETWEEN运算和IN运算一样 BETWEEN运算也是限定所用值的范围 当所给参数和预设的值匹配时才认为是 真 不过BETWEEN运算所限定的方式不是给出一个值表 而是给出一个最大值和最小值 当数据表中的值在这个最大和最小值之间 包括最大值和最小值 时认为是 真 3 1 1使用查询命令 8 使用函数尽管大部分关系数据库系统 RDBMS 都扩充了可以在SQL中使用的函数 许多数据库系统还允许用户自己扩充函数 但下面的几个函数总是可以使用的 AVG 返回某一组中的值除以该组中值的个数的和 COUNT 返回一组行或值中行或值的个数 MAX 返回一组值中的最大值 MIN 返回一组值中的最小值 3 1 1使用查询命令 9 子查询子查询的概念在于将一个查询的结果作为另一个查询的条件 3 1 2使用数据修改命令 1 INSERT语句INSERT语句在使用时有两种不同的格式 需要注意的是 INSERT语句假定需要插入数据的数据表已经用CREATE语句或其他工具建立 第一种用法是不列出数据表的各个列名 而按照数据表建立时的顺序将数据列出 第二种用法是在数据表的后面按照后面数据需要插入的列的顺序列出数据表中各个列的名称 3 1 2使用数据修改命令 2 DELETE语句DELETE语句的使用是相当简单的 格式如下 DELETEFROM表名条件其中条件不是必需的 当没有条件时 就意味着删除表中的所有记录 3 1 2使用数据修改命令 3 UPDATE语句UPDATE语句的作用是将数据库中某一条记录的某一个记录域更新 语句格式如下 UPDATE数据表SET列名 新数据条件和DELETE语句一样 这里的条件也可以是没有的 如果没有条件 那么数据表中的每一条记录都将被更新 3 2JDBC 本节将在上节讲述的SQL语言的基础上介绍JDBC JDBC使得在Java程序中可以轻松地操纵数据库 从企业级的Oracle Sybase DB2到最简单的Access MySQL 在JSP中 就是利用JDBC来访问数据库的 3 2 1什么是JDBC JDBC是一种用于执行SQL语句的JavaAPI 它由一组用Java编程语言编写的类和接口组成 JDBC为工具 数据库开发人员提供了一个标准API 使他们能够用纯JavaAPI来编写数据库应用程序 有了JDBC 向各种关系数据库发送SQL语句就是一件很容易的事 3 2 1什么是JDBC JDBC的用途简单地说 JDBC可做三件事 与数据库建立连接 发送SQL语句 处理结果 3 2 1什么是JDBC JDBC是一种低级API 是高级API的基础JDBC是个 低级 接口 就是说 它用于直接调用SQL命令 在这方面它的功能极佳 并比其他的数据库连接API更易于使用 但它同时也被设计为一种基础接口 在它之上可以建立高级接口和工具 3 2 1什么是JDBC JDBC与ODBC和其他API的比较目前 ODBC 开放式数据库连接 API可能是使用最广的 用于访问关系数据库的编程接口 它能在几乎所有平台上连接几乎所有的数据库 3 2 1什么是JDBC 两层模型和三层模型在两层模型中 Javaapplet或应用程序将直接与数据库进行对话 这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行通信 在三层模型中 命令先是被发送到服务的 中间层 然后由它将SQL语句发送给数据库 数据库对SQL语句进行处理并将结果送回到中间层 中间层再将结果送回给用户 3 2 1什么是JDBC 5 SQL的一致性结构化查询语言 SQL 是访问关系数据库的标准语言 其困难之处在于 虽然大多数的DBMS 数据库管理系统 对其基本功能都使用了标准形式的SQL 但它们却不符合最近为更高级的功能定义的标准SQL语法或语义 3 2 2连接概述 1 打开连接2 一般用法的URL3 JDBCURL4 ODBC子协议5 注册子协议6 发送SQL语句7 事务 3 2 3DriverManager 1 跟踪可用驱动程序2 建立连接 3 3两个简单的例子 例3 15 在这个例子中 将利用JDK自带的JDBC ODBC桥驱动程序查询一个MicrosoftSQLServer7 0自带的例子数据库 并将得到的结果在屏幕上显示出来 3 3两个简单的例子 1 建立ODBC数据源在Windows系统的控制面版中 选择 数据源 ODBC 如果使用Windows2000 那么将在 管理工具 中选择 在系统DSN中 选择 添加 然后 建立一个名为Northwind的数据源 并且设定数据源为需要使用的SQLServer 这里假设为本地SQLServer数据源 如果读者的数据源不在本地 请自行修改 然后 在接下来几步中设定缺省数据库为Northwind 然后点击 完成 建立ODBC数据源 本章小结 本章主要讲述了如下主要内容 SQL介绍查询命令数据修改命令JDBC的概念及使用 第4章JSP技术 4 1通用的语法规则4 1 1元素的语法规则4 1 2JSP中的相对路径和绝对路径4 2注释4 3指令4 3 1page指令4 3 2Include指令4 4内置对象4 4 1request对象4 4 2Response对象4 4 3Session对象4 4 4aplication对象4 4 5Out对象4 4 6Cookie对象 第4章JSP技术 4 5脚本元素4 5 1声明4 5 2表达式4 5 3脚本代码4 6动作4 6 1id和scope属性4 6 2标准动作4 7JSP开发平台的建立 Tomcat4 7 1Tomcat的安装和直接使用4 7 2Tomcat和IIS的配合4 7 3在Tomcat中建立新的Web应用程序4 8TomcatJSP经典配置实例本章小结 本章将详细介绍JSP的语法和语义 如果读者接触过ASP或PHP 将会发现JSP的语法稍显复杂 另一方面 如果读者有Java语言程序设计的经验 就会觉得JSP相当简单 其实 作为J2EE的成员 JSP本来就已经成为Java的一部分了 在JSP中 主要包含以下内容 指令 指令提供该页的全局信息 例如 重要的状态 错误处理 是否是session的一部分等 声明 页面范围的变量和方法的声明 脚本 嵌入页面内Java代码 表达式 把表达式变成string型以便于包含在页面的输出中 4 1通用的语法规则 JSP的页面是由许多的 元素 组成的 本节描述的语法规则对于这些 元素 都是成立的 所以称之为 通用 的语法规则 也就是这些元素共有的特性 4 1 1元素的语法规则 每一个JSP页面都应该可以转换为等价的XML页面 JSP元素的属性也和XML中定义的属性遵从同样的原则 JSP页面的属性值一定要使用引号括起来 双引号 和单引号 都可以使用 作为替代 也可以使用 apos 和 quto 来表示双引号和单引号 4 1 2相对路径和绝对路径 1 服务器端的地址服务器端的相对地址指的是相对于你的web应用的地址 这个地址是在服务器端解析的 不同于html和javascript中的相对地址 他们是由客户端浏览器解析的 也就是说这时候在jsp中的相对地址应该是相对于你的web应用 4 1 2相对路径和绝对路径 2 客户端的地址所有的html页面中的相对地址都是相对于服务器根目录的 而不是 跟目录下的该Web应用的目录 的 4 1 2相对路径和绝对路径 3 JSP中获得当前应用的相对路径和绝对路径根目录所对应的绝对路径 request getRequestURI 文件的绝对路径 application getRealPath request getRequestURI 当前web应用的绝对路径 application getRealPath 4 2注释 实际上 由于在JSP的 脚本代码 部分中 也就是后面会提到的 Scriptlet 直接使用 包含起来的部分中可以使用Java的语法注意 被JSP注释语句注释掉的语句 在JSP页面执行的时候会被忽略 不会执行 并且被注释语句注释掉的信息不会被送到客户端的浏览器中 也就是说 用户通过查看原文件是无法看到这些注释信息的 4 3指令 前面已经讲过指令在JSP中的地位 指令一般来说有如下的形式 指令的这种语法形式尽管简单明了 但并不是符合XML的 第5章将讲述指令的XML语法 4 3 1page指令 page指令的基本语法格式如下 page directive attr list language scriptingLanguage extends className import importList session true false buffer none sizekb autoFlush true false isThreadSafe true false info info text errorPage error url isErrorPage true false contentType ctinfo 4 3 2Include指令 include指令的作用是包含另一个文件 其语法相当简单 4 4内置对象 4 4 1request对象 request对象封装了用户提交的信息 通过调用该对象相应的方法可以获取封装的信息 即使用该对象可以获取用户提交信息 4 4 2Response对象 Response对象对客户的请求做出动态的响应 向客户端发送数据 4 4 3Session对象 Session对象是一个jsp内置对象 它在第一个jsp页面被装载时自动创建 完成会话期管理 从一个客户打开浏览器并连接到服务器开始 到客户关闭浏览器离开这个服务器结束 被称为一个会话 当一个客户访问一个服务器时 可能会在这个服务器的几个页面之间反复连接 反复刷新一个页面 服务器应当通过某种办法知道这是同一个客户 这就需要session对象 当一个客户首次访问服务器上的一个jsp页面时 jsp引擎产生一个session对象 同时分配一个String类型的Id号 jsp引擎同时将这个Id号发送到客户端 存放在Cookie中 这样session对象和客户之间就建立了一一对应的关系 当客户再访问连接该服务器的其他页面时 不再分配给客户新的session对象 直到客户关闭浏览器后 服务器端该客户的session对象才取消 并且和客户的会话对应关系消失 当客户重新打开浏览器再连接到该服务器时 服务器为该客户再创建一个新的session对象 4 4 4aplication对象 服务器启动后就产生了这个application对象 当客户再所访问的网站的各个页面之间浏览时 这个application对象都是同一个 直到服务器关闭 但是与session不同的是 所有客户的application对象都是同一个 即所有客户共享这个内置的application对象 4 4 5Out对象 Out对象是一个输出流 用来向客户端输出数据 Out对象用于各种数据的输出 4 4 6Cookie对象 Cookie是Web服务器保存在用户硬盘上的一段文本 Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它 举例来说 一个Web站点可能会为每一个访问者产生一个唯一的ID 然后以Cookie文件的形式保存在每个用户的机器上 4 5脚本元素 在JSP中 主要的程序部分就是脚本元素 其中包括三个部分 声明 Declararation 表达式 Expression 和代码 Scriptlet 从功能上讲 声明用于声明一个或多个变量 表达式将是一个完整的语言表达式 而代码部分将是一些程序片断 三个脚本元素的基本语法都是以一个 结尾的 4 5 1声明 JSP中的声明用于声明一个或多个变量和方法 并不输出任何的文本到out输出流去 在声明元素中声明的变量和方法将在JSP页面初始化时初始化 语法为 4 5 2表达式 JSP中的表达式可以被看作一种简单的输出形式 需要注意的是 表达式一定要有一个可以输出的值才行 语法为 例如 4 5 3脚本代码 所谓脚本代码 就是Scriptlet 也就是JSP中的代码部分 在这个部分中可以使用几乎任何Java的语法 语法为 4 6动作 动作可以影响输出的文本流 使用 编辑 建立对象 在JSP中 有一些基本的动作 用户也可以添加自己的动作 这需要使用标签库的知识 JSP中的动作是完全基于XML的 下面就来看看JSP由哪些标准的动作以及具有哪些属性 4 6 1id和scope属性 id属性和scope属性是每一个JSP动作都具有的属性 其中id表示一个动作的名称 而scope则表示一个动作的作用域 Page 由Javax servlet JSP PageContext得到在用户请求此页面的过程中有效 Request 由ServletRequest getAttribute name 得到在用户的整个请求过程中有效 Session 由HttpSession getValue name 得到在用户的整个会话期内有效 Application 由ServletContext getAttribute name 得到在Web应用程序执行期间有效 4 6 2标准动作 1 大概是JSP中最重要的一个动作 使用这个动作 JSP可以动态使用JavaBeans组件来扩充JSP的功能 由于JavaBeans在开发上及在使用上的简单明了 使得JSP的开发过程和以往其他动态网页开发工具有了本质上的区别 的语法如下 4 6 2标准动作 2 动作用于向一个JavaBean的属性赋值 需要注意的是 在这个动作中将会使用到的name属性的值将是一个前面已经使用动作引入的JavaBean的名字 语法 4 6 2标准动作 3 动作用于从一个JavaBean中得到某个属性的值 无论原先这个属性是什么类型的 都将被转换为一个String类型的值 语法如下 4 6 2标准动作 4 用于引入一个静态或动态的页面到一个JSP文件中 这动作仅仅和JSPWrite对象发生关系 动作可以包含一个或几个子动作用于向要引入的页面传递参数 语法如下 或 4 6 2标准动作 5 用于引导客户端的请求到另一个页面或者是另一个Servlet去 动作可以包含一个或几个子动作 用于向要引导进入的页面传递参数 需要注意 当动作发生的时候 如果已经有文本被写入输出流而且页面没有设置缓冲 那么将抛出一个IllegalStateException的异常 的语法 或 4 6 2标准动作 6 实际上提供了名称与值的一种一一对应关系 在 和中常常作为子动作使用 语法为 4 6 2标准动作 7 动作为Web开发人员提供了一种在JSP文件中嵌入客户端运行的Java程序 如 Applet JavaBean 的方法 在JSP处理这个动作的时候 将根据客户端浏览器的不同 JSP在执行以后将分别输出为OBJECT或EMBED这两个不同的HTML之素 4 7开发平台的建立 Tomcat 为一个开放源代码的软件 Jakarta Tomcat有着自己独特的优势 首先 它容易得到 事实上 任何人都可以从互联网上自由地下载这个软件 无论从http Jakarta Apache org还是从其他网站 其次 对于开发人员 特别是Java开发人员 Tomcat提供了全部的源代码 包括Servlet引擎 JSP引擎 HTTP服务器 无论是对哪一方面感兴趣的程序员 都可以从这些由世界顶尖的程序员书写的代码中获得收益 最后 由于源代码的开放及世界上许多程序员的卓有成效的工作 Tomcat已经可以和大部分的主流服务器一起工作 而且是以相当高的效率一起工作 如 以模块的形式被载入Apache 以ISAPI的形式被载入IIS或PWS 以NSAPI的形式被载入NetscapeEnterpriseServer 4 7 1Tomcat的安装和使用 设置环境变量 Win9x在autoexec bat里用set语句来设定环境变量 如 setTOMCAT HOME c tomcat 在WinXP Win2000里可以选择 我的电脑 右键点出菜单 选择属性 弹出对话框 系统特性 选择 高级 选项页 然后点按钮 环境变量 可以编辑系统的环境变量 TOMCAT HOME值 c tomcat 用TOMCAT HOME指示tomcat根目录 JAVA HOME值 c java JDK 用JAVA HOME指示JDK安装目录 CLASSPATH值 c java JDK lib tools jar 4 7 2Tomcat和IIS的配合 Windows平台下最常用的Web服务器无疑是IIS 包括PWS 对于IIS Tomcat也提供了配合工作的方法 使用这种方法 可以为本来不具有JavaServlet和JSP功能的IIS增加处理JSP和JavaServlet的功能 4 8TomcatJSP经典配置实例 开发环境配置共分五步 第一步 下载j2sdk和tomcat第二步 安装和配置你的j2sdk和tomcat第三步 建立自己的jspapp目录第四步 建立自己的Servlet第五步 建立自己的Bean 本章小结 本章主要讲述了如下主要内容 JSP的通用语法规则JSP的内置对象JSP的动作Tomcat的相关知识 第5章查找Internet地址 5 1Internet地址概述5 2InetAddress类5 3应用举例本章小结 5 1Internet地址概述 连接到Internet的设备称为节点 计算机节点称为主机 host 为了在网络环境下实现节点或主机之间的通信 网络中每个节点或主机必须有一个地址 而且该地址在网络上是惟一的 在进行数据传输时 通信协议必须在所传输的数据中增加发送信息的地址 源地址 和接收信息的地址 目标地址 这个地址称为Internet地址或IP地址 IP地址是Internet主机的一种数字型标识 它由网络标识 Netid 和主机标识 Hostid 组成 目前大多数IP地址是4字节长 称为IPv4地址 还有一部分IP地址16字节长 称为IPv6地址 4或6称Internet协议版本 本书中的IP地址均采用IPv4地址 IP地址 IP地址组成 IPv4地址由为32位 bit 组成 每8个位为1字节 一般写为4个无符号字节 每个字节范围从0到255 各字节用点号分隔 域名的采用 IP地址是一种数字型网络和主机标识 对于计算机很重要 但数字型标识对人们来说难于记忆 Internet设计者发明了域名系统 DomainNameSystem DNS DNS将网络上计算机的IP地址与一个用符号表示的主机名 域名 联系在一起 由于用符号表示 具有一定的意义 易于记忆 域名的使用 目前使用的域名是一种层次型命名法 它与Internet的层次结构相对应 域名使用的字符包括字母 数字和连字符 而且必须以字母或数字开头和结尾 整个域名总长度不得超过255个字符 一般格式为 主机名 商标名 企业名 单位性质或地区代码 国家代码 域名的使用 一台计算机可以有多个域名 但只能有一个IP地址 一台主机从一个地方移到另一个地方 当它属于不同的网络时 其IP地址必须更换 但是可以保留原来的域名 实际应用中 每台连接到Internet的计算机都应能访问称为域名服务器 DomainNameServer 的机器 域名服务器上通常运行DNS软件 该软件掌握了不同主机名和IP地址之间的映射 大多数时候 可以使用主机名 让DNS处理向IP地址的转换 5 2InetAddress类 InetAddress类又称为互连网地址类 该类的对象是封装计算机名称和IP地址的实例 InetAddress类中没有公共的构造函数 但可由下面3个静态方法获取该类对象 InetAddress类的静态方法 1 publicstaticInetAddressgetByName Stringhostname 给定主机名host 返回该主机名对应的IP地址 2 publicstaticInetAddress getAllByName Stringhostname 给定主机名host 返回与该主机名对应的所有IP地址 3 publicstaticInetAddressgetLocalHost 返回本机的IP地址 例5 1 获取IP本地主机的IP地址 importjava io publicclassGetLocalHost publicstaticvoidmain Stringargs InetAddressIp null try Ip InetAddress getLocalHost catch UnknownHostExceptione System out println getLocalHost Ip 程序说明 在调用getByName getAllByName 和getLocalHost 时 若找不到主机则会抛出异常UnknownHostException 因此在调用这些方法的语句通常入在try块中 并通过catch块捕捉异常 InetAddress类的其它方法 一 使用InetAddress类的以下两个方法 可将主机名或IP地址作为字符串返回 1 publicStringgetHostName 将主机名作为字符串返回 2 publicStringgetHostAddress 将IP地址作为字符串返回 例5 2 获取指定IP地址 publicclassgetHostIp publicstaticvoidmain Stringargs try InetAddressIp InetAddress getByName System out println IP Ip getHostAddress catch UnknownHostExceptione InetAddress类的其它方法 二 1 publicbooleanisMulticastAddress 功能 判断该IP是否为多址发送地址 2 publicbyte getAddress 功能 返回IP地址的原始形式 结果按网络字节顺序排序 地址的最高位字节在getAddress 0 中 3 publicinthashCode 功能 返回该IP地址的散列码值 覆盖Object类中的hashCode InetAddress类的其它方法 三 4 publicbooleanequals Objectobj 功能 比较该对象和指定对象 当且仅当参数不为null且它与该对象表示同一IP地址时结果为真 覆盖Object类中的equals 5 publicStringtoString 功能 返回该IP地址的字符串表示 覆盖Object类中的toString 5 3应用举例 HostLookup 用来查询域名服务器 HostLookup可以完成主机名与IP地址之间的转换 它有两种工作方式 命令行和交互式 若在命令行输入了主机名或IP地址 则HostLookup显示相应的IP地址或主机名 若不在命令行中输入主机名或IP地址 HostLookup则进入交互式方式 例5 3 HostLookup java 例5 3 HostLookup java importjava io publicclassHostLookup publicstaticvoidmain Stringargs if args length 0 for inti 0 i args length i System out println lookup args i 命令行带参数则使用参数 else BufferedReaderbin newBufferedReader newInputStreamReader System in System out println 请输入主机名或IP地址 输入 exit 退出程序 try 例5 3 HostLookup java while true System out print 主机名或IP地址 Stringhost bin readLine 读取键盘输入if host equalsIgnoreCase exit host equalsIgnoreCase quit break System out println lookup host 调用lookup方法转换输入的字符 catch IOExceptione System out println e 例5 3 HostLookup java privatestaticStringlookup Stringhost InetAddressaddr try addr InetAddress getByName host catch UnknownHostExceptione return cannotfindhost host if isHostname host System out print host 的IP地址为 是主机名returnaddr getHostAddress else System out print host 的主机名为 是IP地址returnaddr getHostName 例5 3 HostLookup java privatestaticbooleanisHostname Stringhost char ca host toCharArray for inti 0 i ca length i if Character isDigit ca i if ca i returntrue returnfalse 结果分析 1 第一次运行HostLookup 命令行带有参数 localhost 则使用命令行方式 通过调用lookup方法和其它相关方法得到相应的IP地址 2 第二次运行HostLookup 命令行没有带参数 则使用交互式方式 直到输入 exit 退出程序 本章小结 Internet地址的相关知识InetAddress类的相关知识InetAddress类的应用 第6章用URL检索数据 6 1URL简介6 2URL类及其应用6 3URLConnection类及其应用6 4应用举例本章小结 6 1URL简介 URL规范了WWW资源网络地址的表示方法 WWW资源如文件 Web页 Web站点 新闻组 电子邮件地址 打印机等 通过URL可以访问Internet和WWW 一个URL包含两部分内容 协议名和资源名 URL基本格式 protocol 传输协议 指明获取资源后使用的传输协议 如HTTP FTP FILE等 hostname 主机名 指定资源所在的计算机 可以是IP地址 也可以是主机名或域名 port 端口号 用来区分不同的网络服务 一个URL可以有选择地指定一个 端口 它就是TCP连接所用的远程主机的端口号 如果不指定端口 将使用该协议的缺省值 如HTTP服务的默认端口号为80 可选 filename 文件名 包括该文件的完整路径 是主机上能访问到的目录或文件 anchor 标记 指定文件内的有特定标记的位置 可选 6 2URL类及其应用 为了表示URL Java网络包中定义了URL类 它提供了描述WWW资源特征及读取其内容的方法 1 URL类的构造方法 1 publicURL Stringprotocol Stringhost intport Stringfile throwsMalformedURLException功能 通过指定协议 protocol 主机名 host 端口号 port 和路径 file 创建URL对象 参数 protocol 要使用的协议名称 host 主机名称 可用主机名或域名表示 port 主机端口号 为 1表示URL使用协议的默认端口 file 主机上的文件当指定了未知协议时抛出MalformedURLException异常 2 publicURL Stringprotocol Stringhost Stringfile throwsMalformedURLException功能 通过指定协议 protocol 主机名 host 端口号 port 和路径 file 创建URL对象 使用指定协议的默认端口 参数 protocol 要使用的协议名称 host 主机名称 可用主机名或域名表示 file 主机上的文件当指定了未知协议时抛出MalformedURLException异常 3 publicURL Stringprotocol Stringhost intport Stringfile URLStreamHandlerhandler throwsMalformedURLException功能 通过指定protocol host port file和handler创建URL对象 参数 protocol 要使用的协议名称 host 主机名称 可用主机名或域名表示 port 主机端口号 若为 1表示URL使用协议的默认端口 file 主机上的文件 handler URL的流处理程序 当指定了未知协议时抛出MalformedURLException异常 当安全管理器存在并且其checkPermission方法不允许显式指定流处理程序时抛出SecurityException异常 4 publicURL Stringspec throwsMalformedURLException功能 通过代表URL的字符串创建URL对象 参数 spec 将作为URL解析的字符串 如果字符串指定未知协议时抛出MalformedURLException异常 5 publicURL URLcontext Stringspec throwsMalformedURLException功能 通过URL对象和相地此URL对象的部分来创建URL对象 参数 context 要在其中解析规范的上下文 spec 将作为URL解析的字符串 如果未指定任何协议 或者找到了未知协议时抛出MalformedURLException异常 6 publicURL URLcontext Stringspec URLStreamHandlerhandler throwsMalformedURLException功能 通过URL对象和相地此URL对象的部分来创建URL对象 同时设定此URL对象的流处理程序 参数 context 要在其中解析规范的上下文 spec 将作为URL解析的字符串 handler URL的流处理程序 如果未指定任何协议 或者找到了未知协议时抛出MalformedURLException异常 如果安全管理器存在并且其checkPermission方法不允许指定流处理程序时抛出SecurityException异常 2 URL类的常用方法 1 publicbooleanequals Objectobj 比较两个URL 当且仅当参数不为null且与该对象描述的是同一URL对象时 结果为true 如果两个URL使用相同的协议 访问相同的主机 在主机上使用相同的端口号和主机上相同文件 则它们相等 2 publicfinalObjectgetContent throwsIOException返回URL的内容 3 publicStringgetFile 返回URL的文件名 4 publicStringgetHost 返回URL的主机名 对于 file 协议 这是一个空串 5 publicintgetPort 返回URL的端口号 6 publicStringgetProtocol 返回URL的协议名 7 publicStringgetRef 返回URL的标记 8 publicinthashCode 为散列表索引生成一个合适的整数 9 publicURLConnectionopenConnection throwsIOException返回一个URLConnection对象 该对象代表URL对象连接的网络资源 10 publicfinalInputStreamopenStream throwsIOException打开一个到URL对象指向的网络资源的输入流 通过这个流 可以读取这个网络资源的内容 11 protectedvoidset Stringprotocol Stringhost intport Stringfile Stringref 设置URL的字段 12 publicStringtoString 构造URL的字符串表示 通过调用该对象的流协议处理程序的toExternalForm方法来生成该字符串 13 publicbooleansameFile URLother 比较两个URL 如果此URL和other参数相等 则返回true 不考虑标记部分 URL对象创建后 即可通过它访问指定的WWW资源 这时需调用URL类的OpenStream 方法与指定的URL建立连接并返回一个InputStream类的对象 这样访问WWW资源的操作就转变为I O操作 然后即可用字节流的方式读取WWW资源数据 例6 1 利用URL类获取网络资源 URL importjava io BufferedReader importjava io InputStreamReader publicclassTestURL publicStringgetContent StringstrUrl 返回字符串 错误则返回 erroropenurl try URLurl newURL strUrl BufferedReaderbr newBufferedReader newInputStreamReader url openStream Strings StringBuffersb newStringBuffer while s br readLine null sb append s r n br close returnsb toString catch Exceptione return erroropenurl strUrl publicstaticvoidmain Stringargs TestURLou newTestURL 具体使用方法System out println ou getContent 6 3URLConnection类及其应用 利用OpenStream 以字节流的方法读取资源数据 但在实际应用中 只能读取数据是不够的 在很多情况下都需要将一些信息发送到服务器上去 实现同WWW资源的双向通信 URLConnection类就是用来解决这一问题的 URLConnection类在包中 URLConnection类是以HTTP协议为中心的类 用来建立Java程序和指定的URL的网络通信连接 当与一个URL建立连接时 首先创建一个URL对象 然后调用URL对象的OpenConnection 方法生成对应的URLConnection对象 此时就与指定的URL建立了通信连接 1 URLConnection类的构造方法 URLConnection类只有一个构造方法 原型如下 protectedURLConnection URLurl 构造一到指定URL的URL连接 该方法为受保护的 无法通过new操作符创建URLConnection类的实例 而应通过调用URL对象的OpenConnection 方法返回一个URLConnection类的实例 2 URLConnection类常用方法 1 publicabstractvoidconnect throwsIOException在客户端与服务器之间建立连接 若连接无法建立 则抛出IOException异常 2 publicURLgetURL 返回URLConnection对象指向的URL值 3 publicintgetContentLength 返回连接URL引用资源的内容长度 如果内容长度未知 则返回 1 4 publicStringgetContentType 返回URL引用资源的内容类型 若未知则为null 5 publicStringgetContentEncoding 返回URL引用资源的内容编码 若未知则为null 6 publiclonggetExpiration 返回URL引用资源的截止日期 若未知则为0 该值为从格林威治时间1970年1月1日以来所经过的秒数 7 publiclonggetDate 返回URL引用的资源的发送日期 若未知则为0 该值为从格林威治时间1970年1月1日以来所经过的秒数 8 publiclonggetLastModified 返回由URLConnection引用的资源的最后修改日期 若未知则为0 9 publicStringgetHeaderField Stringname 返回命名报头域的值 若该报头中无该域则为null 10 publicObjectgetContent throwsIOException返回URLConnection对象指向的URL的内容 若获取内容时发生I O错误则抛出IOException异常 11 publicInputStreamgetInputStream throwsIOException返回从该打开的连接读取的输入流 若生成输入流时发生I O错误则抛出IOException异常 12 publicOutputStreamgetOutputStream throwsIOException返回写到该连接的输出流 若生成输出流时发生I O错误则抛出IOException异常 13 publicStringtoString 返回该URLConnection的字符串表示 14 publicvoidsetDoInput booleandoInput 设置URLConnection的doInput域为指定的值 URLConnection即可用于输入又可用于输出 DoInput取值为true时为输入 取值为false时为输出 15 publicbooleangetDoInput 返回URLConnection的doInput域的值 16 publicvoidsetDoOutput booleandoOutput 设置URLConnection的doOutput域为指定的值 URLConnection即可用于输入又可用于输出 DoOutput取值为true时为输出 取值为false时为输入 17 publicbooleangetDoOutput 返回URLConnection的doOutput域的值 例6 2 URLConnection的使用 importjava io publicclassurlcapp publicstaticvoidmain Stringargs throwsException URLurl newURL URLConnectionconn url openConnection conn setDoOutput true PrintStreampsout newPrintStream conn getOutputStream psout println URLConnectionsend psout close DataInputStreamdis newDataInputStream conn getInputStream Stringdata conn setDoOutput false while data dis readLine null System out println data dis close 实现步骤 利用URLConnection类对象向URL对象发送服务请求进行通信时 具体实现步骤如下 以Java程序与服务器端的CGI交互为例 1 创建URL对象 2 调用URL对象的openConnection 方法打开一个到URL的连接 返回相应的URLConnection对象 3 从URLConnection对象获取其连接的输出流 这个输出流就是连接到服务器上CGI的标准输入流 通过这个输出流向服务器发送数据 4 向这个输出流中写入数据 写入结束后关闭输出流 5 从URLConnection对象获取其连接的输入流 这个输入流就是连接到服务器上CGI的标准输出流 通过这个输入流读取服务器发送的数据 最后关闭输入流 6 4应用举例 将通过编写一个小型浏览器来熟悉掌握有关URL类和URLConnection类的应用 程序分析 本程序中使用了Java扩展包java swing提供的JEditorPane类 创建该类对象后 通过调用该类的setPage 方法显示指定网页的内容 在JEditorPane对象不能编辑的情况下 它能生成并响应超链接事件HyperlinkEvent 一个具有IE功能的小型浏览器 importjava awt importjava awt event importjavax swing importjavax swing event importjava io publicclassbrowserextendsJFrame JLabeljlabel JTextFieldjtf JEditorPaneedpl publicbrowser super browser Containercon getContentPane jlabel newJLabel 请输入要访问的网址 jtf newJTextField jtf addActionListener newMyFieldDealing JPanelpanel newJPanel panel setLayout newGridLayout 2 1 panel add jlabel panel add jtf con add panel BorderLayout NORTH edpl newJEditorPane edpl setEditable false edpl addHyperlinkListener newMyHyperListener con add newJScrollPane edpl BorderLayout CENTER setSize 600 800 setVisible true voidgetPage Stringsite try edpl setPage site 在edpl中显示指定网页 catch IOExceptione JOptionPane showMessageDialog this 连接错误 错误提示 JOptionPane ERROR MESSAGE classMyEnterimplementsActionListener 处理输入网址时的回车操作publicvoidactionPerformed ActionEvente Stringstring jtf getText getPage string classMyHyperListenerimplementsHyperlinkListener 处理网页中的超链接publicvoidhyperlinkUpdate HyperlinkEvente if e getEventType HyperlinkEvent EventType ACTIVATED Stringstring e getURL toString 获取超链接指向的地址getPage string 显示超链接指向的网页内容 publicstaticvoidmain Stringargs browsermybrowser newbrowser mybrowser setDefaultCloseOperation JFrame EXIT ON CLOSE 本章小结 URLURL类的主要方法及应用URLConnection类的主要方法及应用
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!