자바 의 url 과 uri 의 차이

4840 단어 자바
  • String urlString = "http://192.168.21.77:8080/swp/mainPage?aa=11&bb%3D22";   
  •     URI uri = URI.create(urlString);   
  •     System.out.println(uri.getPath());   
  •     System.out.println(uri.getQuery());//디 코딩  
  •     URL url2 = new URL(urlString);   
  •     System.out.println(url2.getQuery());//부호화  

  • [java] view plain
    copy

  • print ?
    String urlString = "http://192.168.21.77:8080/swp/mainPage?aa=11&bb%3D22";  
  •     URI uri = URI.create(urlString);  

  •     System.out.println(uri.getPath());  
  •     System.out.println(uri.getQuery());//디 코딩  

  •     URL url2 = new URL(urlString);  
  •     System.out.println(url2.getQuery());//부호화  
  • 	String urlString = "http://192.168.21.77:8080/swp/mainPage?aa=11&bb%3D22";
    		URI uri = URI.create(urlString);
    		System.out.println(uri.getPath());
    		System.out.println(uri.getQuery());//  
    		URL url2 = new URL(urlString);
    		System.out.println(url2.getQuery());//   
    

    URI 디 코딩 가능
    인용 하 다.
    URI 클래스 는 특정한 상황 에서 그 구성 필드 에 대해 전 의 를 실행 합 니 다.URI 를 사용 하여 URL 의 인 코딩 과 디 코딩 을 관리 하고 toURI()와 URI.toURL()을 사용 하여 이 두 종류 간 의 변환 을 실현 하 는 것 을 권장 합 니 다.
    URLEncoder 와 URLDecoder 클래스 를 사용 할 수도 있 지만 HTML 형식의 인 코딩 에 만 적 용 됩 니 다.RFC 2396 에서 정의 하 는 인 코딩 메커니즘 과 다 릅 니 다.
    인용 하 다.
    URI 는 웹 자원 을 표시 하 는 문자열 의 각 부분 을 지정 하 는 순수한 문법 구조 입 니 다.URL 은 URI 의 특례 로 웹 자원 을 찾 을 수 있 는 충분 한 정 보 를 포함 하고 있 습 니 다.다른 URI,예 를 들 면:
    mailto:[email protected]
    이 식별 자 에 따라 자원 을 찾 을 수 없 기 때문에 포 지 셔 닝 문자 에 속 하지 않 습 니 다.이러한 URI 를 우 리 는 URN 이 라 고 부른다.
    자바 라 이브 러 리 에서 URI 클래스 는 자원 에 접근 하 는 방법 을 포함 하지 않 습 니 다.유일한 역할 은 분석 입 니 다.반대로 URL 류 는 자원 에 도달 하 는 흐름 을 열 수 있 습 니 다.따라서 URL 클래스 는 http:,https:,ftp:,로 컬 파일 시스템(file:),Jar 파일(jar:)과 같은 자바 라 이브 러 리 에서 만 사용 할 수 있 습 니 다.
    URI 클래스 의 역할 중 하 나 는 식별 자 를 해석 하고 서로 다른 구성 부분 으로 분해 하 는 것 이다.다음 방법 으로 읽 을 수 있 습 니 다.
    getSchema
    getHost
    getPort
    getPath
    getQuery
    URI 클래스 의 또 다른 역할 은 절대 식별 자 와 상대 식별 자 를 처리 하 는 것 이다.다음 절대 URI 가 존재 한다 면:
    http://docs.mycompany.com/api/java/net/serversocket.html
    다음 과 같은 상대 URI 와:
    ../../java/net/socket.html#Socket()
    그러면 절대 URI 로 통합 할 수 있 습 니 다.
    http://docs.mycompany.com/api/java/net/socket.html#Socket()
    이 과정 은 상대 URL 의 변환 이 라 고 불 린 다.
    이와 반대 되 는 과정 은 상대 화 된다.예 를 들 어 기본 URI 가 있다 고 가정 합 니 다.
    http://docs.mycompany/api
    다른 URI 와:
    http://docs.mycompany/api/java/lang/String.html
    그러면 상대 화 된 URI 는:
    java/lang/String.html
    로 컬 경로 에 접근 할 때:(다른 것 은 코드 가 아 닙 니 다)
    package com.hanghang.awt;
    
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import java.net.*;
    import javax.imageio.ImageIO;
    
    public class ZoomImage {
    	private final int WIDTH = 80;
    	private final int HEIGTH = 60;
    	BufferedImage image = new BufferedImage(WIDTH, HEIGTH, BufferedImage.TYPE_INT_RGB);
    	Graphics graphics = image.getGraphics();
    
    	public void zoom() throws Exception {
    		URL url = ZoomImage.class.getClassLoader().getResource("com/hanghang/file/cat.jpeg");
    		URI uri = new URI(url.getPath());
    		System.out.println("url.getPath():"+url.getPath());
    		System.out.println("url.toString():"+url.toString());
    		System.out.println("URLDecoder.decode(url.getPath(), \"utf-8\"):"+URLDecoder.decode(url.getPath(), "utf-8"));
    		System.out.println("URLDecoder.decode(url.getPath()):"+URLDecoder.decode(url.getPath()));
    		System.out.println("uri.getPath():"+uri.getPath());
    		System.out.println("uri.toString():"+uri.toString());
    		Image srcImage = ImageIO.read(new File(URLDecoder.decode(url.getPath(), "utf-8")));
    		graphics.drawImage(srcImage, 0, 0, WIDTH, HEIGTH, null);
    		ImageIO.write(image, "jpg", new File("cat.jpg"));
    	}
    
    	public static void main(String[] args) throws Exception {
    		new ZoomImage().zoom();
    	}
    }

    url.getPath():/D:/%e6%9d%a8%e5%8f%ac%e6%88%90/Eclipse%20Java%20Base%20WorkSpace/corejava/bin/com/hanghang/file/cat.jpeg
    url.toString():file:/D:/%e6%9d%a8%e5%8f%ac%e6%88%90/Eclipse%20Java%20Base%20WorkSpace/corejava/bin/com/hanghang/file/cat.jpeg
    URLDecoder.decode(url.getPath(),"utf-8"):/D:/양 리 콜/Eclipse Java Base WorkSpace/orejava/bin/com/hang/file/cat.jpeg
    URLDecoder.decode(url.getPath()):/D:/鏉 ㄥ ㄥ 鎴 鎴?/Eclipse Java Base WorkSpace/corejava/bin/com/hanghang/file/cat.jpeg
    uri.getPath():/D:/양 리 콜/Eclipse Java Base 작업 공간/core java/bin/com/hang/file/cat.jpeg
    uri.toString():/D:/%e6%9d%a8%e5%8f%ac%e6%88%90/Eclipse%20Java%20Base%20WorkSpace/corejava/bin/com/hanghang/file/cat.jpeg
    URL 의 toString()방법 은 프로 토 콜 이름 을 가지 고 있 습 니 다.
    URL 의 getPath()방법 에는 프로 토 콜 이름 이 없습니다.

    좋은 웹페이지 즐겨찾기