认识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();
- }
- }
- 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");
- }
- }
- }
相关推荐
Java获取URL对应的资源 在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。1、认识URL(Java API doc)类 URL 代表一个...
URL和URLConnection:Java提供了java.net.URL和java.net.URLConnection等类,用于访问URL指定的资源,如网页、文件等,并进行数据的读取和写入。 HTTP客户端:Java提供了java.net.HttpURLConnection等类,用于创建...
数据科学导论 实验2:熟悉常用的HDFS操作 ...3. 查看 Java 帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出 HDFS 中指定文件 的文本到终端中。
一、Java中调用servlet说明: 我们有时可能需要在Java类中调用Servlet从而实现某些特殊的功能,在JavaAPI中提供了一个URL的类,其中openStream( )方法可以打开URL的连接,并返回一个用于该... import java.net.Malf
A.2实验二:熟悉常用的HDFS操作 ...(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2) Hadoop版本:2.7.1。 (3)JDK版本:1.7或以上版本。(4) Java IDE:Eclipse。
在这里碰到的问题是:调用java.net.URLEncoder的encode()方法时,如果没有显示指定字符集参数,那么URLEncoder会使用默认字符集。这个默认字符集在Eclipse里跑main()方法和在Tomcat里跑Web应用,得到的结果不一样,...
WSIN.govbr 图书馆访问 National Press 网络服务,以便根据网络服务发布和跟进发送至 Diário Oficial da União。 此库是为 Java 7 编译的。有关此库的更多信息,请参阅。...import java.net.URL ; import java.util
PicoMaven 在启动应用程序之前从Maven存储库下载库 如何使用?...import java.net.URL ; import java.net.URLClassLoader ; import java.nio.file.Path ; import java.nio.file.Paths ; import java.u
从C++转到Java需注意的地方 默认的Java环境中包括一些从Java基础类实现而来的一些包。这些允许你很快的写出一些有用的程序,这些包如下: ...java.net:提供对网络编程的支持。包括处理socket,URL,Internet寻址等。
import java.net.*; public class login extends JWindow{ public login(){ JFrame name = new JFrame("网络至尊系统——用户登录"); name.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Dimension ...
android-market-api ...没有具体要求,它使用java.net.URL与谷歌市场服务器通信,仅此而已。 因此它应该可以在 Google App Engine 或 Android 应用程序中正常运行。 在您的类路径中包含 androidmarketa
将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...
两类引擎... 144 新的标准... 144 正则引擎的分类... 145 几句题外话... 146 测试引擎的类型... 146 匹配的基础... 147 关于范例... 147 规则1:优先选择最左端的匹配结果... 148 引擎的构造... 149 规则2...
2.2.4. 用 Struts 开发Web 应用......................................................................................42 2.3. 为什么需要框架.................................................................
全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关的API和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非...
log4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling.log log4j.appender.ROLLING_FILE.Append=true //true:添加 false:覆盖 log4j.appender.ROLLING_FILE.MaxFileSize=10...
3)网络包(java.net):支持Internet的TCP/IP协议,用于实现Socket编程;提供了与Internet的接口,支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。 4)抽象图形用户接口包(javax.swing):实现了...
自己动手写Web服务器(Socket、多线程)、ashx模式Web开发、ViewState、Cookie、Session、Http协议、Web开发基本原则、XSS漏洞防范、Request对象、Response对象、Server对象、虚拟路径、HttpHandler深入、ASP.Net...
1. 介绍......................................................................................3.2. 漫游logon 应用..............................................................................................