`

java.net.URL的URL构建方式

    博客分类:
  • java
阅读更多

认识IP、认识URL是进行网络编程的第一步。java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源。
    一、认识URL

    类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

    简单的可以把URL理解为包含:协议、主机名、端口、路径、查询字符串和参数等对象。每一段可以独立设置。

    应用程序也可以指定一个“相对 URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL.

    相对 URL 不需要指定 URL 的所有组成部分。如果缺少协议、主机名称或端口号,这些值将从完整指定的 URL 中继承。

    由于 URL 不懂 URL 转义,所以它不会识别同一 URL 的对等编码和解码形式。

    注意,URI 类在某些特定情况下对其组成字段执行转义。建议使用 URI 管理 URL 的编码和解码,并使用 toURI() 和 URI.toURL() 实现这两个类之间的转换。

    也可以使用 URLEncoder 和 URLDecoder 类,但是只适用于 HTML 形式的编码,它与 RFC2396 中定义的编码机制不同。

    (以上介绍来自Java API doc)

    二、URL对象的构建

    方式很多,可以看看API文档。

    三、获取URL指定的资源

    下面给个例子,说明如何获取到指定的资源。

 

import java.io.*;     
import java.net.URL;     
import java.net.URLConnection;     
   
public class TestURL {     
        public static void main(String[] args) throws IOException {     
                test4();     
                test3();     
                test2();     
                test();     
        }     
   
        /**    
         * 获取URL指定的资源。    
         *    
         * @throws IOException    
         */     
        public static void test4() throws IOException {     
                URL url = new URL("http://lavasoft.blog.51cto.com/attachment/200811/200811271227767778082.jpg");     
                //获得此 URL 的内容。     
                Object obj = url.getContent();     
                System.out.println(obj.getClass().getName());     
        }     
   
        /**    
         * 获取URL指定的资源    
         *    
         * @throws IOException    
         */     
        public static void test3() throws IOException {     
                URL url = new URL("http://www.hrtsea.com/down/soft/45.htm");     
                //返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。     
                URLConnection uc = url.openConnection();     
                //打开的连接读取的输入流。     
                InputStream in = uc.getInputStream();     
                int c;     
                while ((c = in.read()) != -1)     
                        System.out.print(c);     
                in.close();     
        }     
   
        /**    
         * 读取URL指定的网页内容    
         *    
         * @throws IOException    
         */     
        public static void test2() throws IOException {     
                URL url = new URL("http://www.hrtsea.com/down/soft/45.htm");     
                //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。     
                Reader reader = new InputStreamReader(new BufferedInputStream(url.openStream()));     
                int c;     
                while ((c = reader.read()) != -1) {     
                        System.out.print((char) c);     
                }     
                reader.close();     
        }     
   
        /**    
         * 获取URL的输入流,并输出    
         *    
         * @throws IOException    
         */     
        public static void test() throws IOException {     
                URL url = new URL("http://lavasoft.blog.51cto.com/62575/120430");     
                //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。     
                InputStream in = url.openStream();     
                int c;     
                while ((c = in.read()) != -1)     
                        System.out.print(c);     
                in.close();     
        }     
}     

   四、Java所支持的URL类型

import java.net.URL;     
   
public class MainClass {     
   
        public static void main(String[] args) {     
   
                String host = "www.java2s.com";     
                String file = "/index.html";     
   
                String[] schemes = {"http", "https", "ftp", "mailto", "telnet", "file", "ldap", "gopher",     
                                "jdbc", "rmi", "jndi", "jar", "doc", "netdoc", "nfs", "verbatim", "finger", "daytime",     
                                "systemresource"};     
   
                for (int i = 0; i < schemes.length; i++) {     
                        try {     
                                URL u = new URL(schemes, host, file);     
                                System.out.println(schemes + " is supported\r\n");     
                        } catch (Exception ex) {     
                                System.out.println(schemes + " is not supported\r\n");     
                        }     
                }     
        }     
}     

 

分享到:
评论

相关推荐

    URLSniffer:简单的xposed模块,可从java.net.URL嗅探URL

    URLSniffer是一个用于捕获从java.net.URL嗅探到的URL,并将callig软件包名称和URL记录到logcat和Xposed日志中。 使用DalvikVM在运行Android 4.4.4且允许SELinux设置为允许的Nexus 5上进行构建和测试。 目前,...

    WireMock.Net:WireMock.Net是一个灵活的库,用于使用请求匹配和响应模板对Web HTTP响应进行存根和模拟。 基于http:WireMock.org的功能,但扩展了更多功能

    基于C#.NET版本其模仿基于来自JAVA功能 。 有关更多信息,另请参见以下WIKI页面: 。 主要特点 HTTP响应存根,可在URL /路径,标题,cookie和主体内容模式上匹配 库可用于单元测试和集成测试 作为独立进程,...

    uri:一个纯ClojureClojureScript URI库

    它们都在某种程度上依赖java.net.URI或java.net.URL 。 该库提供了纯Clojure / ClojureScript的替代方案。 请参阅 安装 要安装,请将以下依赖项添加到您的项目或构建文件中: deps.edn: lambdaisland/uri { :...

    精通正则表达式~~~

    正则表达式的注意事项和处理方式... 93 集成式处理... 94 程序式处理和面向对象式处理... 95 查找和替换... 98 其他语言中的查找和替换... 100 注意事项和处理方式:小结... 101 字符串,字符编码和匹配模式....

    Struts in Action中文版

    3. 构建一个简单应用....................................................................................60 3.1. 被支柱支撑的支柱......................................................................

    asp.net知识库

    Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...

    struts in Action

    3. 构建一个简单应用....................................................................................60 3.1. 被支柱支撑的支柱............................................................................

    Java精华(免费版)

    以java.net.URL类的构建器(constructor)为例,它的每一个构建器都会抛出MalformedURLException。MalformedURLException就是一种checked exception。设想一下,你有一个简单的程序,用来提示用户输入一个URL,然后...

    Java加密与解密的艺术

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    telnetd-x:自动从code.google.comptelnetd-x导出

    telnetd-x TelnetD扩展 ...更加“开放”和灵活的telnetd构建,将其添加到开源telnetd库中。 源代码被伪造。 此版本修复了原始telnetd 2.0组件的线程读/... &lt;url&gt;http://download.java.net/maven/2/&lt;/url&gt; &lt;/reposit

    一个简单的java爬虫产品

     在创建索引的时候,需要将网页的URL和网页的内容传到相应的方法中,当然URL和内容是要对应的,也许是经验太少吧,我采取的是通过构建一个JavaBean的方式来传递的,不知道大家有没有更好的方法    2.关于要创建...

    JAVA上百实例源码以及开源项目源代码

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    Java加密与解密的艺术配书源代码

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    java课程设计

    import java.net.MalformedURLException; class SoundThread implements Runnable{ AudioClip chosenClip; static boolean isplay=true; static boolean flag=true; public void stopSoundThread(){flag=false;...

    java 面试题 总结

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...

    单点登录源码

    - 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...

    ip17mon-java:17mon ip库查询

    IP 17mon java version, 比官方的速度快很多,支持监视文件改动自动加载IP库请从 ipip.net 下载添加依赖:&lt;dependency&gt; &lt;groupId&gt;...//从URL加载IP库String ipBaseUrl = "http://xxx.example.com/ip.dat";...

    ssh(structs,spring,hibernate)框架中的上传下载

    6. <property name="url" value="jdbc:oracle:thin:@localhost:1521:ora9i"/> 7. 8. 9. 10. !-- Hibernate会话工厂配置 //--> 11. 12. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean...

Global site tag (gtag.js) - Google Analytics