Java的网络知识

QQ911349435档

QQ911349435档

2016-02-19 12:27

下面这个Java的网络知识教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

  1) 从网络上加载APPLE(小应用程序)

  现在的大多数浏览器都不约而同地对Java进行支持。在HTML语言中,在.html文件的任何的位置上有一个特殊标记。这句话就是对小应用程序的引用。小应用程序没有受到地域的限制,它可以在本地,也可以在Internet上的任何一个地方。其位置对于用户来讲是透明的。而对于浏览器来讲,其位置在中被读出,然后进行定位小应用程序,并运行它。如果小应用程序位于远程计算机上,那么浏览器就必须小载它,然后才可运行。

  (2) 从URL加载图像

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  首先,必须先介绍URL。它表示一个通过资源定位器(Uniform Resource Locator),是网络上某些资源的地址。Java程序可以使用一个URL来引用或连接网络资源。如:
  如果需要从远程加载一张图时,Java程序必须先创建一个URL,以包含图像的地址。
  URL是Java程序里高级别的交互功能。

  二、URL及其使用

  URL代表通用资源定位器。将URL提供给网络浏览器,那么它就可以在Internet上寻找并定位文件。在编写Java程序时,也可以用URL在互联网上寻找希望访问的资源。类组java.net中包含一个名为URL的类,Java可以使用它来表示一个URL地址。
  这里需要区别的是:URL地址表示一个Internet地址,而URL对象则指代Java程序中的类URL的一个实例。

  (1) URL的定义

  URL是一个缩写,代表通过资源定位(Uniform Resource Locator),是对Internet资源的一个引用(一个地址)。
  URL不但可以表示网络上的一个文件的名称,而且可以指向网络上的其它资源,如:数据库查询和命令输出。如:
  http://java.sun.com//
  所有的URL拥有两个主要的组成部分:
  (1) 协议辨识符;
  (2) 资源名称。
  上面的例子中,http为协议辨识符,而//java.sun.com/为资源名称。
  协议辨识符说明被使用来获取资源的协议的名称。示例使用超文本传输协议(HTTP),它用在超文本文档服务中使用。HTTP只是被用来访问网上不同类型资源的多种不同协议之一。其它的协议还包括文件传输协议(FTP)、gopher、文件(file)和新闻(news)。
  资源名称是资源的完整地址。资源名称的格式完全依赖于使用的协议,但对于大多数格式而言,资源名称包括下面组件的一种或多种:
  (1) 宿主名称:资源所处的机器的名称。
  (2) 文件名:机器上文件的路径。
  (3) 端口号:连接的端口号(一般为可选项)。
  (4) 引用:对于资源内部一个有名连接(anchor)的一个引用;它常常指代一个文件内的特定位置(一般为可选项)。
  大多数情况下,宿主名称和文件名是必须的,而端口号以及引用则是可选的。上面的示例中java.sun.com为宿主名称,冒号后的第一个斜线’/’是文件/index.html的简写。
  在构建任何URL的时候,都应该将协议辨识符放在首位,后面紧跟冒号’:’,然后才是资源名称,即:
  protocolID:resourceName
  在类组java.net中包含一个类URL,Java程序使用它代表一个URL地址。Java程序可以构造一个URL对象,打开对它的一个连接,然后在这个连接中读入和写出。

  三、创建一个URL

  在Java程序中,可以创建一个URL对象以表示一个URL地址。URL对象总是指向一个绝对的URL,但它可以由一个绝对的URL、一个相对的URL或URL组件构造而来。
  创建一个URL对象的最简单的方法就是从一个表示URL地址的可阅读形式的字符串创建。
  在Java中,可以使用上述文字的字符串创建一个URL对象:
  URL gamelan=new URL(http://www.linuxaid.com.cn/)
  这种方法创建的URL对象表示一个绝对的URL。一个绝对的URL包含了到达资源所需的所有信息。另外,还可以由一个相对的URL地址创建URL对象。

  (1) 相对URL

  一个相对URL只包含到达对于另一个URL(或处于另一个URL上下文之中)的资源的足够信息。
  在HTML文件中常常使用相对的URL指定资源的位置。如有两个文件1.html、2.html和3.html,并且它们在同一个目录下面,那么在1.html中如果需要调用2.html和3.html则必须写入:
  My Story
  Picture of My Pets
  这些URL均为相对的URL,即:这些URL相对于包含它们的文件1.html。
  在Java中中,可以由一个相对的URL指定创建一个URL对象。例如,假设程序已经为http://www.linuxaid.com.cn/创建了一个URL对象,而且已经知道该站点的一个文件的名称为linuxaid.animation.html,则就可以在初始的linuxaid URL上下文中,通过简单地指定文件名,为linuxaid站点的这个文件创建URL:
  URL linuxaid = new URL(http://www.javaworld.com/);
  URL linuxaidanimation = new URL(linuxaid,linuxaid.animation.html);
  上面的代码使用用了类URL的另一种形式的构造过程,它允许你由一个URL对象(基本URL)和一个相对的URL创建一个对象。
  这个构造过程也可以用来创建对一个文件中的有名连接(引用)的URL对象。例如,假设文件linuxaid.animation.html中包含一个有名连接BOTTOM,它在文件的底部,
  则可以使用相对URL构造过程创建一个URL对象(在下面的语句中BOTTOM前的字符#是必须的):
  URL linuxaidAnimationBottom=new URL(linuxaid,#BOTTOM);
  这种URL构造过程的一般形式为:
  URL(URL baseURL,String relativeURL)
  其中,第一个参数是一个URL对象,指定新的URL的基址,第二个参数为一个String对象,是对相对于基址的资源名称的描述。如果baseURL为null,那么这个构造过程就将relativeURL视为一个绝对的URL指定。但如果relativeURL是一个绝对的URL指定,那么构造过程将忽略baseURL。

  (2)其它的URL构造过程

  除前面介绍的类URL的构造过程外,类URL还提供了另外两个构造过程。当你使用URL的时候,例如HTTP的URL,它的资源名称部分包含宿主名称、文件名称、端口号和
  引用等组件,这些构造过程就很有用了。如果不清楚包含完整URL的String对象,只要知道URL的不同组件,使用这两个构造过程就显得非常方便。
  如果需要设计一个网络程序,让用户使用鼠标选择协议、宿主名称、端口号和文件名,则可以由这些组件构造一个URL。类URL提供了用协议、宿主名称和文件名创建一个URL的构造过程。下面的代码就创建了一个指向linuxaid站点的linuxaid.animation.html文件的URL:
  URL linuxaid = new URL(http,www.linuxaid.com.cn,/linuxaid.animation.html);
  该语句和URL linuxaid=URL(http://www.linuxaid.com.cn/linuxaid.animation.html);是等价的。其中,第一个参数为协议,第二个参数为宿主名称,最后一个为文件的路径名。
  注意,文件名的开头为一个斜线’/’,说明文件名相对于宿主的根目录。
  类URL的另一个构造过程还在参数列表中添加了端口号,例如:
  URL linuxaid = new URL(http,www.linuxaid.com,80,/linuxaid.animation.html);
  其中,80是端口号,别的参数同前。该语句创建了如下的一个URL对象:
  http://www.linunaid.com.cn:80/linunxaid.animation.html
  如果使用这些过程创建一个URL对象,就可以通过使用URL的过程toString()或过程toExternalForm()得到一个包含完整URL地址的String对象。

  (2) 异常MalformedURLException

  在类URL的构造过程的两个版本中,当传递给它们的参数指向一个空的或不知道的协议时,它们都抛出一个MalformedURLException异常。如果希望捕捉和处理这个异常,只要将URL的构造过程语句放在一个try/catch中即可。例如:
  try{
  URL url=new URL(.);
  }catch (MalformedURLException e){
  //异常处理代码
  }

  四、分析一个URL

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  类URL提供一些查询URL对象的过程,可以用它们获取一个有效的URL对象所包含的协议、宿主名称、端口号和文件名。下面是这些过程的功能描述:
  (1) getProtocol( ),返回URL的协议辨识符组件。
  (2) getHost(),返回URL的宿主名称组件。
  (3) getPort(),返回URL的端口号组件;如果端口没有设置,返回-1;
  (4) getFile(),返回URL的文件名组件。
  (5) getRef(),返回URL的引用组件。
  请注意;并非所有的URL地址都包含这些组件。类URL提供这些过程的原因是HTTP URL包含这些组件,而且它们可能是最常使用的URL。类URL在某种程序是以HTTP为中心的。
  可以使用这些getXXX()过程获取关于URL的信息,它们与创建URL对象的构造过程无关。
  下面给出一个示例程序ParseURL,它由一个指定URL的字符串创建了一个URL对象,然后使用URL对象的存取过程分析URL;
  import java.net.*;
  class ParseURL{
  public static void main(String[] args){
  URL url = null;
  try{
  url = new URL(http://www.ncsa.uiuc.edu:8080/demoweb/urlprimer.html#INSTALL);
  System.out.println(protocol = + url.getProtocol());
  System.out.println(host =+url.getHost());
  System.out.println(filename =+url.getFile());
  System.out.println(port=+url.getPort());
  System.out.println(ref=+url.getRef());
  }catch (MalformedURLException e){
  System.err.println(MalformedURLException:+e);
  }
  }
  }
  下面是程序执行的结果:
  protocol=http
  host=www.ncsa.uinc.edu
  filename=/demoweb/url-primer.html
  port=8080
  ref=INSTALL
  使用过程getRef()应当注意:在JDK1.02以前的版本中,过程getRef()仅对以下两个构造过程创建的URL有效:
  URL(String absoluteURLSpecification);
  URL (URL baseURL,String relativeURLSpecification);
  例如,假设你使用下面的语句创建了一个URL:
  URL linuxaid=new URL(http://www.linuxaid.com.cn/);
  URL linuxaidAnimationBottom=new URL(gamelan,linuxaid.animation.html#BOTTOM);
  当你对linuxaidAnimationBottom调用过程getRef()时,它正确地返回BOTTOM。但你如果使用下面的语句创建一个指向同一资源的URL:
  URL linuxaidAnimationBottom = new URL(http,www.linuxaid.com.cn,linuxaid.animation.html#BOTTOM);
  当调用过程getRef()从上面语句所创建的linuxaidAnimationbottom中获取信息时,getRef()返回null,而不能返回正确值BOTTOM。

  五、直接从一个URL读入

  在成功创建了一个URL以后,就可以调用URL的过程openStream()以获取一个流,并从这个流中读入URL的内容。过程openStream()返回一个InputStream对象,因此,可以使用
  一般的InputStream过程读入。本书第2.9节描述了Java开发环境提供的I/O类及其使用方法。
  从一个URL中读入就如同从一个输入流中读入一样容易。下面的Java程序openStreamTest使用过程openStream()得到URL http://www.javaworld.com/ 上的一个输入流,然后从这个
  输入流中读入URL的内容,并显示在屏幕上。
  Import java.net.*;
  Import java.io.*;
  Class OpenStreamTest{
  Public static void main(String[] args){
  Try{
  URL url = new URL(http://www.javaworld.com/);
  DataInputStream dis = new DataInputStream(url.openStream());
  String str;
  While((str=dis.readLine())!=null)
  System.out.println(str);
  Dis.close();
  }catch (MalformedURLException e){
  System.err..println(MalformedURLException:+e);
  }catch (IOException e){
  System.err.pintln(IOException:+e);
  }
  }
  }
  }
  当运行程序时,就会看到在http://www.javaworld.com/的HTML文件中的HTML命令以及文本内容滚动显示在窗口中。或者,你可能看到:
  IOException:java.net.UnknownHostException:www.javaworld.com
  上面这条信息说明:可能需要对你的系统进行必要的设置,才能使你的程序能够找到www.javaworld.com服务器。
  除了上面提到的过程openStream(),类URL还提供了过程getContent(),它可以直接获取URL指向的资源。下面给出的程序Fetch展示了使用过程getContent()具体方法。
  import java.net.*;
  import java.awt.*;
  import java.io.*;
  import java.awt.image.*;

  public class Fetch{
  public static String fetch(String addr)
  throws MalformedURLException,IOException{
  URL url = new URL(addr);
  Return (String)(url.getContent());
  }

  public static Image fetchImage(String addr,Component comp)
  throws MalformedURLException,IOException{
  URL url = new URL(addr);
  Return comp.createImage((ImageProducer)(url.getContent()));
  }

  public static void main(String[] args)
  throws MalformedURLException,IOException{
  System.out.println(fetch(args[0]));
  }
  }

  Fetch只能下载普通的文本文件(非HTML文件或其它类型的文本文件)。在类Fetch中还包括了一个过程fetchImage(),它可以下载GIF或其它常见格式的图像,你可以使
  用下面给出的程序FetchImageTest来进行测试。
  import java.awt.*;
  import java.awt.image.*;
  import java.net.*;
  import java.io.*;

  public class FetchImageTest extends Frame{
  private Image img;

  public void paint(Graphics g){
  g.drawImage(img,0,0,this);
  }
  public static void main(String)[] args)
  throws MalformedURLException,IOException{
  FetchImageTest window = new FetchImageTest();
  window.img = Fetch.fetchImage(args[0],window);
  window.resize(300,300);
  window.show();
  }
  }
  在编译完该程序之后,你可以采用以下命令运行该程序:
  java FetchImageTest http://www.xp163.com/Files/BeyondPic/jeeves.sm.gif
  请注意:普通文本文件和图象文件的下载依赖于Java实现的内部内容处理器。在JDK环境中,这两个示例程序均可以正常工作,但并不意味着在其它的Java实现下也能工作,对于那些没有包含合适的内容处理器的Java实现而言,这两个程序就不能工作。如果程序遇到了不支持的内容类型,程序将抛出异常并退出。
  这两个程序只是为了说明过程getContent()的用法。一般情况下,这不是通过网络加载文本或图象的最好途径,例如,类Applet的过程loadImage()就是一个更好的选择。

  六、连接至一个URL

  在成功地创建了一个URL以后,就可以调用URL的openConnection()过程连接至该URL。当连接至一个URL之后,就通过计算机网络在Java程序与URL之间建立了一个通信链接。
  过程openConnection()创建一个新的URLConnection对象(如果不存在一个合适的),对它进行初始化,连接至URL,并返回URLConnection对象。如果这个过程中某个环节出了问题(例如:服务器已关闭了),过程openConnetion()将抛出一个IOException异常。
  如果已经成功地连接至希望的URL,就能够使用URLConnection对象进行对连接的读写操作,或者查询关于它的内容的信息。下面会介绍如何对一个URLconnection进行读写操作。下面给出的程序GetURLInfo首先连接至URLhttp://www.javaworld.com,然后查询URLConnectction对象的有关信息。
  import java.net.*;
  import.java.io.*;
  import java.util.*;

  public class GetURLInfo{
  public static void printInfo(URLConnection uc){
  try{
  System.out.println(uc.getURL().toExternalForm()+:);
  System.out.println( Content Type: +uc.getContentType());
  System.out.println(Content Length:+uc.getContentLength());
  System.out.println(Last Modified:+new Date(uc.getLastModified()));
 

展开更多 50%)
分享

猜你喜欢

Java的网络知识

编程语言 网络编程
Java的网络知识

Java入门知识

编程语言 网络编程
Java入门知识

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java中的异步网络编程

编程语言 网络编程
Java中的异步网络编程

java中几个重要的知识细节!

编程语言 网络编程
java中几个重要的知识细节!

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

使用拨号网络的简单知识

电脑网络
使用拨号网络的简单知识

java基础知识——java入门与加深一

编程语言 网络编程
java基础知识——java入门与加深一

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

VB中多媒体五种控制手段

VB中多媒体五种控制手段

pjblog发表评论用的ajaxJS.js

pjblog发表评论用的ajaxJS.js
下拉加载更多内容 ↓