`
8366
  • 浏览: 802414 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

URL与URI

阅读更多

* URL(Uniform Resource Locator ),通用资源定位符。http://www.mybole.com.cn/index.asp就是一个URL。


*URI(Uniform Resource Identifier),通用资源标识符。


*URI纯粹是个符号结构,用于指定构成Web资源的字符串的各个不同部分。URL是一种特殊类型的URI,它包含了用于查找某个资源的足够信息。其它的URI,例如:mailto:myoble@mybole.com.cn则不属于定位符,因为它里面不存在根据该标识符来查找的任何数据。这种URI称为URN(通用资源名)。


*在Java库中,URI类不包含用于访问通用资源标识符设定的任何方法,它的唯一作用是进行分析。相反,URL类则可以打开到达资源的一个字符串。

实验:通过URL 来下载服务器上的一个资源文件,需要Tomcat服务器支持

 

代码:

 

 

package cn.com.xinli.test.socket;

import java.awt.event.*;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.*;

public class HttpDownLoad
{
	public static void main(String[] args)
	  {
	    JFrame jf=new JFrame("下载程序");
	    jf.setSize(600,400);
	    jf.setLocation(100,100);
	    JPanel p=new JPanel();
	    JLabel l=new JLabel("Please input URL:");
	    final JTextField tf=new JTextField(30);
	    p.add(l);
	    p.add(tf);
	    jf.getContentPane().add(p,"North");
	    final JTextArea ta=new JTextArea();
	    jf.getContentPane().add(ta,"Center");
	    JButton btn=new JButton("Download");
	    jf.getContentPane().add(btn,"South");
	    btn.addActionListener(new ActionListener() {
	          public void actionPerformed(ActionEvent e) {
	            String str=tf.getText();
	            System.out.println("输入URI的内容:"+str);
	            String fileName=str.substring(str.lastIndexOf("/")+1);
	            /*下载文件的名字*/
	            System.out.println("fileName:"+fileName);
	            
	            try {
	              URL url=new URL(str);
	              URLConnection urlConn=url.openConnection();
	              /**
	               * 由于windos 系统的换行符是\r\n,linux 系统的换行符是\n,
	               * 为了通用我们可以使用系统属性的方式得到换行符
	               * 
	               */
	              String line=System.getProperty("line.separator");
	              ta.append("Host: "+url.getHost());
	              ta.append(line);
	              ta.append("Port: "+url.getDefaultPort());
	              ta.append(line);
	              ta.append("ContentType: "+urlConn.getContentType());
	              ta.append(line);
	              ta.append("ContentLength: "+urlConn.getContentLength());
	              InputStream is=urlConn.getInputStream();
	              
	              /**
	               * 以下注释的部分为按行读取 关键代码:strLine=br.readLine())!=null
	               * 为注释的部分为按字节读取,每次读一个字节 关键代码:(data=is.read())!=-1
	               * 
	               * 文本和html等格式文件可以按行读取
	               * 图像声音文件必须按字节读取,因为这个时候已经没有 行 的概念
	               * 其实所有的文件都可以按字节读取,建议使用按字节读取 
	               */
	              //InputStreamReader isr=new InputStreamReader(is);
	              //BufferedReader br=new BufferedReader(isr);
	              
	              FileOutputStream fos=new FileOutputStream(fileName);
	              //String strLine;
	              //while((strLine=br.readLine())!=null)
	              int data;
	              while((data=is.read())!=-1)
	              {
//	                fos.write(strLine.getBytes());
	            	/**
	            	 * 按行读取的时候必须有此句,因为按行读取的时候,每次对一行,并不会
	            	 * 把行分割符号写入输出流,需要我们手动添加
	            	 * 
	            	 */
	  //            fos.write(line.getBytes());
	                fos.write(data);
	              }
	              //br.close();
	              is.close();
	              fos.close();
	            }
	            catch (Exception ex) {
	              ex.printStackTrace();
	            }

	          }
	        });
	    jf.addWindowListener(new WindowAdapter() {
	         public void windowClosing(WindowEvent e) {
	           System.exit(0);
	         }
	       });
	    jf.show();
	  }
}

 

 

 

启动TOMCAT,启动应用程序,下载 /bz/images 应用下的图片文件到 测试程序的根路径下

 

 

 

 

成功将服务器上/bz/images/下的一个图片文件下载到本程序的 根路径下!

 

 

发挥:

 

此程序以后可以应用到 从另外一个远端的服务器上下载文件,而不需要走web层,从response对象中得到输出流

 

分享到:
评论

相关推荐

    URI-Template-Pattern-Matcher:将输入 URL 与 URI 模板进行比较。 支持 RFC 6570 URI 模板级别 1

    URI-模板-模式-匹配器概述将 URL 与许多 RFC 6570 URI 模板级别 1 进行比较以找到匹配项。 代码是用Java编写的。 这解决了什么问题? 给定一个 URL,HTTP 服务器必须确定该 URL 是否与 URI 模板之一匹配。 一个用例...

    URI-Template-Pattern-Matcher:(草案)Java 代码。 将输入 URL 与 URI 模板进行比较。 支持 RFC 6570 URI 模板级别 1

    URI-模板-模式-匹配器概述 将 URL 与许多 RFC 6570 URI 模板级别 1 进行比较以找到匹配项。 代码是用Java编写的。 这解决了什么问题? 给定一个 URL,HTTP 服务器必须确定该 URL 是否与 URI 模板之一匹配。 一个用例...

    URI,URL常识

    URI,URL常识,需要的可以看看

    URI和URL区别 .

    URI和URL区别 .

    Boost.URL是一个用于操作统一资源标识符(URI)和定位器(URL)的库。.zip

    在C++程序中,与URI和URL相关的任务通常涉及字符串操作,而Boost.URL库则为这些任务提供了高级抽象,避免了底层的字符串处理复杂性。 Boost.URL库的核心功能包括: 1. **解析**: Boost.URL库可以将一个完整的URL...

    URL和URI使用指南

    URL和URI的使用的方法。获取网络上的数据。

    URI和URL文档

    URI与URL的区别 自己看看

    Java 实例 - 解析 URL源代码+详细指导教程.zip

    7. **URL与URI的区别**: 虽然URL是一种特殊的URI(Uniform Resource Identifier),但两者还是有区别的。URI是资源的通用标识,而URL提供了获取该资源的具体路径。 8. **URL与HttpClient**: 在实际的网络编程中...

    对java网络编程里的URL、URI研究

    对java网络编程里的URL、URI研究,如果需要我也可以将研究上篇传上来

    《软件系统架构与开发环境》第三章源代码-by 南邮-陈杨

    3.2.2 URL与URI 156 3.2.3 HTTP协议的PDU 159 3.2.4 B-S架构与HTTP协议封装 162 3.2.5 HTTP的扩展协议WebDAV 164 3.3 JDBC/ODBC协议 167 3.3.1 数据库应用系统及其C-S架构 167 3.3.2 数据库系统 168 3.3.3 ...

    Uri一个URI处理库

    - **链接生成**:在构建动态网站时,Uri库可以轻松地生成带参数的链接,简化URL管理。 - **API设计**:在RESTful API设计中,正确处理和验证URI是至关重要的,Uri库为此提供了便利。 - **数据交换**:当应用程序...

    博客《Uri详解之——Uri结构与代码提取》对应源码

    博客中的源码可能涵盖了如何解析Uri,提取查询参数,以及通过Uri与ContentProvider进行数据交互的过程。例如,使用`Uri.withAppendedPath()`添加路径,使用`Uri.encode()`和`Uri.decode()`进行URL编码解码。 7. **...

    URI和URL的区别

    一、URI、URL和URN 二、URI和URL的区别及关系 简而言之,URI是标识某一个资源,而URL用位置来标识一个资源。 一、URI、URL和URN Web上地址的基本形式是URI,它有多种形式:常见的有URL和URN。 URI = Universal ...

    解析URI与URL之间的区别与联系

    总的来说,理解和区分URI与URL对于理解和开发Web应用程序至关重要。在编程或配置网络服务时,正确使用这两个概念能够确保资源的准确定位和访问。例如,在STRUTS配置文件中,URI可能用来定义一个动作或者资源的标识,...

    Java路径问题汇总.pdf

    3. **URL与URI转换**: - `File.toURI()`会将路径中的空格转换为"%20",并添加协议"file:/"。 - `File.toURL()`则简单地添加协议"file:/",不进行编码转换,保留原始路径形式。 4. **WSDLReader与路径**: - 在...

    python爬蟲1

    4. **URL与URI的理解**: - **URI(Uniform Resource Identifier)**:是统一资源标识符,用于唯一地标识网络上的任何资源。它通常包括访问资源的命名机制、主机名和资源名称。 - **URL(Uniform Resource Locator...

    计算机网络系列(八)- Http.pdf

    文章从HTTP的基本概念讲起,介绍了TCP/IP协议族、HTTP与TCP的区别与联系、URL与URI的概念,以及Web的三项构建技术。接着,详细解释了HTTP协议的主要特点、消息结构、状态码、GET和POST方法的区别,并探讨了HTTP协议...

    Android网络开发技术实战详解

    同时,URL与URI(Uniform Resource Identifier)的区别也应了解,URI是资源的唯一标识,而URL是可访问的URI,包含了访问资源的机制。 邮件应用在Android中通常使用SMTP(Simple Mail Transfer Protocol)协议发送...

    Http.rar_http 协议

    6. URL与URI: URL(Uniform Resource Locator)是统一资源定位符,是互联网上资源的唯一地址;URI(Uniform Resource Identifier)则是更通用的概念,包括URL和其他形式的标识符。URL是URI的一个子集。 7. HTTP...

    uriparser-0.7.7.zip

    `uriparser`库提供了一套API,使得开发者可以方便地分解URL的各个部分,如协议(scheme)、主机(authority)、路径(path)、查询字符串(query)和片段(fragment)。 1. **协议(scheme)**:`uriparser`允许...

Global site tag (gtag.js) - Google Analytics