1.URL定义
URL:统一资源定位符(uniform resource location)
Class URL表示统一资源定位符,指向万维网上的“资源”的指针,可表示Internet上的资源地址。 资源可以像文件或目录一样简单,或者可以是对更复杂的对象的引用,例如对数据库或搜索引擎的查询。
作用:定义资源位置,解析URL,获取URL的资源
2.URL语法
URL一般格式:协议名://主机名[:端口号][/目录路径/文件名][#锚点名]
**<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fragment>**
scheme:获取资源使用的协议,例如http、ftp等,没有默认值
user:password:用户名与密码,一般访问ftp时会用到,他显示的表明了访问资源的用户名与密码。但是这个可以不写,不写的话可能会让你输入用户名密码
host:主机。在URL中,主机名通常是域名或者IP地址。
port:端口,访问主机时的端口,如http默认端口是80.可以不写(不写用getPort()的方法返回-1)
path:通过host:port我们能找到主机,但是主机上文件很多,通过path则可以定位具体文件。例如www.baidu.com/file/index.html。则path是/file/index.html,表示我们访问/file/index.html这个文件,他很像linux上的路径。
params:这个很少见,主要作用就是像服务器提供额外的参数,用来表示本次请求的一些特性。例如ftp传输模式有两种,二进制和文本,你肯定不希望使用文本形式传输二进制图片,这样你的图片下载下来后可能没法看了。为了向应用程序提供更丰富的信息,URL中有个专门的部分来表示这种参数。例如ftp://file.qiandu.com/pub/guid.pdf;type=d其中的type=d就是params
query:通过get方式请求的参数,例如:www.qiandu.com/index.html?username=dgh&passwd=123
fragment:例如www.qiandu.com/index.html#1。当html页面比较长时,我们通常会将其分为好几段,#1就可以 快速定位到某一段。
3.构造方法
1.URL(String spec)
2.URL(String protocol, String host, int port, String file)
3.URL(String protocol, String host, int port, String file, URLStreamHandler handler)
4.URL(String protocol, String host, String file)
5.URL(URL context, String spec)
6.URL(URL context, String spec, URLStreamHandler handler)
- 根据字符串创建URL对象
- 根据协议、主机名、端口号、文件名创建URL对象
- 根据协议、主机名、端口号、文件名、URLStreamHandler流对象创建URL对象。
- 根据协议、主机名、文件名创建URL对象。
- 根据基本URL和相对URL(字符串形式)创建新建URL对象
- 根据基本URL和相对URL(字符串形式)创建URL对象,并传入一个URLStreamHandler对象。
4.解析URL资源
/*
*解析URL常见方法
*/
public class URLTest {
public static void main(String[] args) {
try {
URL game = new URL("http://www.7k7k.com:8080//");
//通过在指定的上下文中解析给定的规范来创建一个URL。 <scheme>://<authority><path>?<query>#<fragment>
URL url = new URL(game, "index.html?username=pinkie#test");//<fragment>表示锚点
System.out.println("协议: "+url.getProtocol());
System.out.println("主机: "+url.getHost());
System.out.println("端口: "+url.getPort());
System.out.println("默认端口: "+url.getDefaultPort());
System.out.println("权限: "+url.getAuthority());
System.out.println("文件信息: "+url.getFile());
System.out.println("文件路径: "+url.getPath());
System.out.println("参数: "+url.getQuery());
System.out.println("锚点: "+url.getRef());
System.out.println("用户"+url.getUserInfo());//用户@ip
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}