`

基于URL的高层次Java网络编程

    博客分类:
  • Java
阅读更多

8.2.1一致资源定位器URL

URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。

8.2.2 URL的组成

protocol://resourceName
  协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用。例如:
  http://www.sun.com/ 协议名://主机名
  http://home.netscape.com/home/welcome.html 协议名://机器名+文件名
  http://www.gamelan.com:80/Gamelan/network.html#BOTTOM 协议名://机器名+端口号+文件名+内部引用.

8.2.3 创建一个URL

为了表示URL, java.net中实现了类URL。我们可以通过下面的构造方法来初始化一个URL对象:
  (1) public URL (String spec);
     通过一个表示URL地址的字符串可以构造一个URL对象。
     URL urlBase=new URL("http://www. 263.net/")
  (2) public URL(URL context, String spec);
     通过基URL和相对URL构造一个URL对象。
     URL net263=new URL ("http://www.263.net/");
     URL index263=new URL(net263, "index.html")
  (3) public URL(String protocol, String host, String file);
     new URL("http", "www.gamelan.com", "/pages/Gamelan.net. html");
  (4) public URL(String protocol, String host, int port, String file);
     URL gamelan=new URL("http", "www.gamelan.com", 80, "Pages/Gamelan.network.html");

  注意:类URL的构造方法都声明抛弃非运行时例外(MalformedURLException),因此生成URL对象时,我们必须要对这一例外进行处理,通常是用try-catch语句进行捕获。格式如下:

try{
     URL myURL= new URL(…)
  }catch (MalformedURLException e){
  …  }

8.2.4 解析一个URL

一个URL对象生成后,其属性是不能被改变的,但是我们可以通过类URL所提供的方法来获取这些属性:
   public String getProtocol() 获取该URL的协议名。
   public String getHost() 获取该URL的主机名。
   public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1。
   public String getFile() 获取该URL的文件名。
   public String getRef() 获取该URL在文件中的相对位置。
   public String getQuery() 获取该URL的查询信息。
   public String getPath() 获取该URL的路径
   public String getAuthority() 获取该URL的权限信息
   public String getUserInfo() 获得使用者的信息
    public String getRef() 获得该URL的锚

8.2.5 从URL读取WWW网络资源

当我们得到一个URL对象后,就可以通过它读取指定的WWW资源。这时我们将使用URL的方法openStream(),其定义为:
         InputStream openStream();
  
  方法openSteam()与指定的URL建立连接并返回InputStream类的对象以从这一连接中读取数据。
  public class URLReader {
  public static void main(String[] args) throws Exception {
                      //声明抛出所有例外
    URL tirc = new URL("http://www.tirc1.cs.tsinghua.edu.cn/");
                      //构建一URL对象
    BufferedReader in = new BufferedReader(new InputStreamReader(tirc.openStream()));
    //使用openStream得到一输入流并由此构造一个BufferedReader对象
    String inputLine;
    while ((inputLine = in.readLine()) != null)
                 //从输入流不断的读数据,直到读完为止
       System.out.println(inputLine); //把读入的数据打印到屏幕上
    in.close(); //关闭输入流
  }
  }

8.2.6 通过URLConnetction连接WWW

通过URL的方法openStream(),我们只能从网络上读取数据,如果我们同时还想输出数据,例如向服务器端的CGI程序发送一些数据,我们必须先与URL建立连接,然后才能对其进行读写,这时就要用到类URLConnection了。CGI是公共网关接口(Common Gateway Interface)的简称,它是用户浏览器和服务器端的应用程序进行连接的接口,有关CGI程序设计,请读者参考有关书籍。
  类URLConnection也在包java.net中定义,它表示Java程序和URL在网络上的通信连接。当与一个URL建立连接时,首先要在一个URL对象上通过方法openConnection()生成对应的URLConnection对象。例如下面的程序段首先生成一个指向地址http://edu.chinaren.com/index.shtml的对象,然后用openConnection()打开该URL对象上的一个连接,返回一个URLConnection对象。如果连接过程失败,将产生IOException.
  Try{
    URL netchinaren = new URL ("http://edu.chinaren.com/index.shtml");
    URLConnectonn tc = netchinaren.openConnection();
  }catch(MalformedURLException e){ //创建URL()对象失败
  …
  }catch (IOException e){ //openConnection()失败
  …
  }
  类URLConnection提供了很多方法来设置或获取连接参数,程序设计时最常使用的是getInputStream()和getOurputStream(),其定义为:
     InputSteram getInputSteram();
     OutputSteram getOutputStream();
  通过返回的输入/输出流我们可以与远程对象进行通信。看下面的例子:
  URL url =new URL ("http://www.geelink.cn");
  //创建一URL对象
  URLConnectin con=url.openConnection();
  //由URL对象获取URLConnection对象
  DataInputStream dis=new DataInputStream (con.getInputSteam());
  //由URLConnection获取输入流,并构造DataInputStream对象
  PrintStream ps=new PrintSteam(con.getOutupSteam());
  //由URLConnection获取输出流,并构造PrintStream对象
  String line=dis.readLine(); //从服务器读入一行
  ps.println("client…"); //向服务器写出字符串 "client…"
    其中backwards为服务器端的CGI程序。实际上,类URL的方法openSteam()是通过URLConnection来实现的。它等价于
    openConnection().getInputStream();
  基于URL的网络编程在底层其实还是基于下面要讲的Socket接口的。WWW,FTP等标准化的网络服务都是基于TCP协议的,所以本质上讲URL编程也是基于TCP的一种应用.

分享到:
评论

相关推荐

    Java网络编程

    4. **基于URL的高层次Java网络编程** - **URL**: 用于定位互联网资源。 - **操作**: Java提供了多种类库(如`java.net.URL`)来处理URL,实现对资源的访问。 #### 三、总结 Java网络编程涉及多个核心概念和技术...

    Java编程语言详细教程

    ◇8.2 基于URL的高层次Java网络编程 ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇课前索引 ◇9.1 JavaBean的基本概念 ◇9.2 JavaBean开发简介 ◇9.3 RMI的基本...

    网络编程PPT(Java程序设计之网络编程 )

    在较高层次,Java的URL类可以方便地处理网络资源。Java.nio(非阻塞通讯)是Java提供的高级网络编程接口,它允许程序在不阻塞主线程的情况下处理多个网络连接,提高了并发性能。 总的来说,网络编程PPT详细介绍了...

    Java中的网络编程学习总结

    #### 四、基于URL的高层次Java网络编程 ##### 1. URL (Uniform Resource Locator) URL用于标识Internet上的资源位置。其格式如下: ``` protocol://hostname[:port]/path?query#fragment ``` - `protocol`:指定...

    java网络编程

    《Java网络编程》是一部详尽的指南,适合各种层次的读者,无论是网络开发老手还是Java新手。它不仅提供了理论知识,更重要的是提供了大量的实践代码,帮助读者掌握Java网络编程的核心技术和最佳实践。无论是构建Web...

    Java网络编程专业培训教程.pptx

    总的来说,Java网络编程涵盖的内容广泛,从基础的URL解析到复杂的Socket编程,都需要深入理解网络原理和Java的相关API。学习这部分内容能够帮助开发者构建健壮的分布式系统,实现跨网络的数据交换和资源共享。

    java网络编程.pdf

    Java网络编程是Java技术的重要组成部分,它允许程序与网络中的其他设备进行通信。在Java中,网络编程主要依赖于`java.net`包提供的类和接口。以下是对标题和描述中涉及知识点的详细说明: 1. **概述** - **...

    Java 网络协议源码

    `java.net`包提供了基本的网络通信类,如Socket、ServerSocket、URL等,它们基于传统的阻塞I/O模型。而`java.nio`包则引入了非阻塞I/O模型,提供了选择器(Selector)和通道(Channel)的概念,适用于高并发的网络应用。...

    java程序设计之网络编程学习课件

    本学习课件包含了前19章的基础内容,旨在帮助开发者理解和掌握Java编程的基本概念,同时也涉及到了一些高级话题,如指针,尽管Java语言本身并不支持指针操作,但理解其工作原理对于深入学习计算机科学至关重要。...

    JAVA清华大学教程

    ◇8.2 基于URL的高层次Java网络编程 ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇课前索引 ◇9.1 JavaBean的基本概念 ◇9.2 JavaBean开发简介 ◇9.3 RMI的基本...

    09_第9章 网络编程1

    【基于Socket的低层次Java网络编程】 Socket是网络通信的基本接口,它允许程序在两台计算机之间建立通信链路。在Java中,Socket类和ServerSocket类用于实现基于TCP的通信。低层次的Socket编程需要处理更细节的网络...

    JAVA 清华大学 教程

    ◇8.2 基于URL的高层次Java网络编程 ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇课前索引 ◇9.1 JavaBean的基本概念 ◇9.2 JavaBean开发简介 ◇9.3 RMI的基本...

    清华大学JAVA教程

    ◇8.2 基于URL的高层次Java网络编程 ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇课前索引 ◇9.1 JavaBean的基本概念 ◇9.2 JavaBean开发简介 ◇9.3 RMI的基本...

    推荐课程 完整版优质java教程 java精品教学课件 Java语言程序设计 第16章 网络编程(共33页).ppt

    Java语言程序设计涵盖了一系列核心知识点,从基础到高级,包括了网络编程这一重要主题。网络编程在Java中主要涉及如何让程序通过网络进行通信和数据交换。本篇将重点解析第16章“网络编程”。 1. **网络基础**: -...

    网络编程详细视频教程

    通过学习这个网络编程视频教程,你将能够掌握Java语言进行网络通信的基本技能,包括使用TCP和UDP进行数据传输,解析和操作URL,以及处理网络主机的IP地址。这些知识不仅有助于你构建网络应用程序,也是进一步学习...

    java基础语法、面向对象、常用API、反射&集合、IO流&网络编程

    这个压缩包文件包含的内容涵盖了Java学习的核心领域,包括基础语法、面向对象编程、常用API、反射与集合、以及IO流和网络编程。下面将对这些知识点进行详细讲解。 1. **Java基础语法**:这是学习任何编程语言的起点...

    java网络通信系统的研究与开发源码.zip

    java网络通信系统的研究与开发源码.zip包含的内容涉及了计算机网络通信和Java编程语言的核心知识。网络通信系统是一种应用广泛的软件系统,它允许计算机之间通过网络进行数据交换和资源共享。Java作为一种面向对象的...

Global site tag (gtag.js) - Google Analytics