《第23讲Java高级编程(二).ppt》由会员分享,可在线阅读,更多相关《第23讲Java高级编程(二).ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第23讲 Java高级编程(二)URL 编程URL(Uniform Resource Locator)是统一资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW和FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。一个URL包括两部分内容:协议名和资源名,中间用“:”分开,即protocol:resourceName其中协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或
2、文件内部的一个引用。对于多数协议,其中的主机名和文件名是必须的,而端口号和文件内部的引用则是可选的,例如:http:/http:/http:/ 1public URL(String spec);通过一个表示URL地址的字符串可以构造一个URL对象。例如,URL url1=new URL(http:/ URL(URL context,String spec);通过基URL和相对URL构造一个URL对象。例如,URL url2=new URL(http:/ url3=new URL(url2,index.html)3public URL(String protocol,String host,St
3、ring file);例如,new URL(http,/index.htm)4public URL(String protocol,String host,int port,String file);例如,URL lib=new URL(http,80,library/library.htm);类URL的构造方法都要声明抛弃非运行时异常(MalformedURLException),因此生成URL对象时,我们必须要对这一异常进行处理,通常是用try-catch语句进行捕获。URL常用的方法及其功能 public String getProtocol()/获取该URL的协议名。缩进四格,publ
4、ic String getHost()/获取该URL的主机名。public int getPort()/获取该URL的端口号,若没有设置端口,返回-1。public int getDefaultPort()/获取默认的端口号。public String getFile()/获取该URL的文件名。public String getRef()/获取该URL在文件中的相对位置。public String getQuery()/获取该URL的查询信息。public String getPath()/获取该URL的路径。public String getAuthority()/获取该URL的权限信息。p
5、ublic String getUserInfo()/获得使用者的信息。public String getRef()/获得该URL中的HTML文档标记。public String toString()/获得完整的URL字符串。套接字(Socket)编程在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。TCP是面向连接的可靠数据传输协议,它重发一切没有收到的数据,并进行数据准确性检查。IP协议是面向无连接的数据包通信,它具有数据包路由选择和差错控制功能,但是它不进行正确检验。Socket工作过程包含以下四个基本的步骤:1.创建Socket;2.打开连接到Socket的输入
6、流和输出流;3.按照一定的协议对Socket进行读/写操作;4.关闭Socket。基于无连接的数据报(UDP)通信UDP是一个无连接、发送独立数据包的协议。不可靠的协议,不提供可靠性保证。但是有时人们需要快速传输信息,并能容忍小的错误,就可以考虑使用UDP协议。DatagramPacket类和DatagramSocket类是Java用来实现无连接的数据报通信的。其中DatagramPacket类负责读取数据等信息,它的主要构造方法为:(1)public DatagramPacket(byte buf,int length);(2)public DatagramPacket(byte buf,i
7、nt length,InetAddress add,int port);DatagramSocket类则负责数据报的发送与接收,它主要构造方法有:(1)public DatagramSocket();(2)public DatagramSocket(int port);UDP的编程实现过程 UDP编程包括数据报的发送和接收过程。数据报的发送过程可描述如下:(1)创建一个DatagramPacket对象,其中包含要发送的数据,数据分组长度,以及目标主机的IP地址和端口号。(2)在指定的本机端口创建DatagramSocket对象。(3)调用DatagramSocket对象的send()方法,以D
8、atagramPacket对象为参数发送数据报。数据报的接收过程可以描述为:(1)创建一个用于接收数据报的DatagramPacket对象,其中包含空数据缓冲区和指定数据报分组长度。(2)在指定的本地端口好创建DatagramSocket对象。(3)调用DatagramSocket对象的receive()方法,以DatagramPacket对象为参数接收数据报,接收到的信息包括数据报内容,发送端的IP地址,以及发送端主机的发送端口号。建立与数据库的连接在建立与数据库系统的连接时,首先要使用JDBC加载驱动程序。JDBC使用Class类的forName()方法指明加载哪个数据库系统的JDBC驱动
9、程序。forName()方法的参数为代表各数据库系统的一个字符串,各个数据库系统的写法各不相同,例如MySQL数据库系统写为“org.git.mm.mysql,Driver”,Oracle写为“oracle.jdbc.driver,OracleDriver”,JDBC-ODBC Bridge的数据库系统的写法为“sun.jdbc.odbc.JdbcOdbcDriver”。在正确加载JDBC驱动程序后,使用DriverManager.getConnection()方法连接数据库,该方法可有3个参数,第一个是JDBC URL,后两个分别是数据库系统的用户名和密码,指定以什么身份连接数据库。JDBC
10、 URL是唯一确定数据库的命名方式,以便Java程序定位数据库实现连接,由数据库系统的生产厂商确定,即由JDBC驱动程序提供商确定。各驱动程序提供商并没有一个严格的JDBC URL命名标准,但在一定程度上还是有其必须遵循的规范。JDBC URLJDBC URL的标准格式如下所示,它由三部分组成,各部分之间用冒号分隔。jdbc:u其中“:”是必须的。jdbc是总协议,是固定的。子协议是使用驱动程序或者数据库的名称。例如JDBC-ODBC的子协议为“odbc”。但是子协议不唯一,例如Oracle的纯Java驱动程序的子协议不一定是“oracle”。注意,Java是大小写敏感的,JDBC URL中的
11、协议部分所有字符必须是小写的。数据库标识的一般格式如下:/:/u其中用于指定连接数据库所在的服务器,可以是服务器的机器名,也可以是IP地址。当客户端和服务器是同一台机器时,服务器名可以写成“localhost”或者“127.0.0.1”。“:”后的端口号,是可选的。如果没有标明端口号,将使用数据库系统的默认端口号。建立连接在创建完数据源后,就可以建立与数据库data.mdb的连接。下面代码是通常情况下用驱动程序建立连接所需所有步骤的示例:Class.forName(“sun.jdbc.odbc:OdbcOdbcDriver”);String url=“jdbc:odbc:data”;Drive
12、rManager.getConnection(url);访问数据库与数据库建立连接后,可以实现数据库的访问。访问数据库是数据库应用最根本的目的,而访问数据库最基本的问题有两个,第一,如何通过SQL语句来访问数据库;第二,如何接收从数据库返回的结果。JDBC通过接口Statement和接口ResultSet来实现数据库的访问,它们都在系统包java.sql中。编写一个程序将Access数据库文件中的记录打印出来 import java.sql.*;public class Ex12-6 public static void main(String args)try Class.forName(s
13、un.jdbc.odbc.JdbcOdbcDriver);Connection conn=DriverManager.getConnection(jdbc:odbc:mydatabase);Statement stmt=conn.createStatement();String sql=SELECT name,phone FROM fam;ResultSet resultSet=stmt.executeQuery(sql);String name,phone;while(resultSet.next()name=resultSet.getString(1).trim();phone=resul
14、tSet.getString(2).trim();System.out.println(name+,+phone);catch(Exception e)e.printStackTrace();本章小结Java提供了强大的编程功能,如多线程程序设计,网络程序设计和数据库编程。Java语言的一个重要特性就是内置对多线程的支持,程序员可以应用Java开发出具有多线程、同时处理多个任务的应用程序。多线程程序设计主要介绍了多线程的概念、多线程的实现和多线程的同步与控制。Java网络编程主要介绍基于URL的高层Java网络编程和基于Socket的低层Java网络编程与基于UDP的Java网络编程,以及基于无连接的数据报通信编程。Java数据库编程主要介绍JDBC概念、与数据库的连接,以及对数据库的访问。