자바 의 url 과 uri 의 차이
4840 단어 자바
[java] view plain
copy
print ?
String urlString = "http://192.168.21.77:8080/swp/mainPage?aa=11&bb%3D22";
System.out.println(uri.getPath());
URL url2 = new URL(urlString);
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()방법 에는 프로 토 콜 이름 이 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.