1、URL的理解与实例化

  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3. /**
  4. * URL网络编程
  5. * 1.URL:统一资源定位符,对应着互联网的某一资源地址
  6. * 2.格式:
  7. * http://127.0.0.1:8080/work/164.jpg?username=subei
  8. * 协议 主机名 端口号 资源地址 参数列表
  9. */
  10. public class URLTest {
  11. public static void main(String[] args) {
  12. try {
  13. URL url = new URL("http://127.0.0.1:8080/work/164.jpg?username=subei");
  14. // public String getProtocol( ) 获取该URL的协议名
  15. System.out.println(url.getProtocol());
  16. // public String getHost( ) 获取该URL的主机名
  17. System.out.println(url.getHost());
  18. // public String getPort( ) 获取该URL的端口号
  19. System.out.println(url.getPort());
  20. // public String getPath( ) 获取该URL的文件路径
  21. System.out.println(url.getPath());
  22. // public String getFile( ) 获取该URL的文件名
  23. System.out.println(url.getFile());
  24. // public String getQuery( ) 获取该URL的查询名
  25. System.out.println(url.getQuery());
  26. } catch (MalformedURLException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. }

2、URL网络编程实现Tomcat服务端数据下载

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.HttpURLConnection;
  5. import java.net.URL;
  6. public class URLTest1 {
  7. public static void main(String[] args) {
  8. HttpURLConnection urlConnection = null;
  9. InputStream is = null;
  10. FileOutputStream fos = null;
  11. try {
  12. URL url = new URL("http://127.0.0.1:8080/work/164.jpg");
  13. urlConnection = (HttpURLConnection) url.openConnection();
  14. urlConnection.connect();
  15. is = urlConnection.getInputStream();
  16. fos = new FileOutputStream("day10\\1643.jpg");
  17. byte[] buffer = new byte[1024];
  18. int len;
  19. while((len = is.read(buffer)) != -1){
  20. fos.write(buffer,0,len);
  21. }
  22. System.out.println("下载完成");
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. } finally {
  26. //关闭资源
  27. if(is != null){
  28. try {
  29. is.close();
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. if(fos != null){
  35. try {
  36. fos.close();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. if(urlConnection != null){
  42. urlConnection.disconnect();
  43. }
  44. }
  45. }
  46. }

3、URI、URL和URN的区别

  • URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位符,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。
  • 在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。

image.png