举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > javaurlencode转码 Java URL

javaurlencode转码 Java URL

2023-05-21 16:17 Java教程

javaurlencode转码 Java URL

javaurlencode转码

JavaURLEncode转码是一种用于将字符串转换为URL编码的方法,它可以将字符串中的特殊字符转换为URL可以识别的格式。它是一种常用的Web应用开发技术,在Web应用中,它可以帮助我们将数据传递到服务器端,并在服务器端进行处理。

JavaURLEncode转码使用了一套特殊的字符集来表示不同的字符,这套字符集包含了大小写英文字母、数字、标点和其他特殊字符。当我们需要将一个特定的字符传递到服务器端时,就需要使用JavaURLEncode转码来将其转换成URL可识别的格式。

String str = "Hello World!"; 
String encodedStr = URLEncoder.encode(str, "UTF-8"); 
System.out.println(encodedStr); // Outputs: Hello%20World!

JavaURLEncode转码也可以用于对URL中的参数进行转义处理,例如在URL中传递中文时,就需要使用JavaURLEncode来对其进行处理。此外,JavaURLEncode也可以帮助我们避免XSS攻击(Cross Site Scripting Attack)。

String str = "http://www.example.com/search?q=中文"; 
String encodedStr = URLEncoder.encode(str, "UTF-8"); 
System.out.println(encodedStr); // Outputs: http%3A%2F%2Fwww.example.com%2Fsearch%3Fq%3D%E4%B8%AD%E6%96%87

Java URL

Java网络教程 - Java URL


绝对URI具有以下通用格式:

scheme:scheme-specific-part

scheme-specific-part 取决于 scheme

例如,httpscheme使用一种格式,并且mailtoscheme使用另一种格式。

URI的另一个通用形式如下,它表示一个URL。

scheme://<authority><path>?<query>#<fragment>

scheme访问资源的方法。

它是协议名称,如http,ftp等。

URI中的 scheme path 部分是必需的。所有其他部分均为可选。

 path部分可以是空字符串。权限部分指示服务器名称或IP地址。

如果权限部分表示服务器名称,则它可以是 userinfo @ host:port 的形式。

例如,标识本地文件系统中的文件的URL使用文件方案作为file:///c:/documents/java.doc


URL

URI语法在其 path 部分中使用分层语法。

path的多个部分由正斜杠(/)分隔。

query 部分指示通过执行指定的查询获得资源。

它由名称 - 值对组成,用&符号分隔。

名称和值由等号=分隔。

例如, id = 123& num = 5 是一个查询,它有两个部分,id和num。id的值为123,num的值为5。

fragment 部分标识辅助资源,通常是子集由URI的另一部分标识的主资源。

下面是一个URI的例子,它也被分成几部分:

URI:        //www..cn/java/a.html?id=123#abc
Scheme:     http 
Authority:  www..cn 
Path:       /java/a.html 
Query:      id=123
Fragment:   abc

要在URI中使用空格字符,请使用%20,这是空格的转义形式。

使用%25表示URI中的%字符。

例如,要在查询中使用5.2%的值

//www..cn/details?rate=5.2%25

Java URI类

Java表示一个URI和一个URL作为对象。

它提供以下四个类,您可以使用它们将URI和URL用作Java程序中的对象:

java.net.URI
java.net.URL
java.net.URLEncoder
java.net.URLDecoder

以下代码创建一个URI对象。

URI baseURI  = new URI("http://www.www..cn");

要创建具有相对URI字符串的URI,并使用baseURI解析它

URI baseURI  = new URI("http://www.www..cn");
URI relativeURI = new URI("welcome.html");
URI resolvedRelativeURI = baseURI.resolve(relativeURI);

完整代码

import java.net.URI;

public class Main {
  public static void main(String[] args) throws Exception {
    String baseURIStr = "http://www.www..cn/a/b/c/index.html?id=1&rate=5%25#foo";
    String relativeURIStr = "../x/y/z/welcome.html";

    URI baseURI = new URI(baseURIStr);
    URI relativeURI = new URI(relativeURIStr);

    URI resolvedURI = baseURI.resolve(relativeURI);

    printURIDetails(baseURI);
    printURIDetails(relativeURI);
    printURIDetails(resolvedURI);
  }
  public static void printURIDetails(URI uri) {
    System.out.println("URI:" + uri);
    System.out.println("Normalized:" + uri.normalize());
    String parts = "[Scheme=" + uri.getScheme() + ", Authority="
        + uri.getAuthority() + ", Path=" + uri.getPath() + ", Query:"
        + uri.getQuery() + ", Fragment:" + uri.getFragment() + "]";
    System.out.println(parts);
    System.out.println();
  }
}

上面的代码生成以下结果。

我们可以使用它的toURL()方法从URI对象中获取一个URL对象,如下所示:

URL  baseURL = baseURI.toURL();

例2

演示java.net.URL类的使用的示例类

import java.net.URL;

public class Main {
  public static void main(String[] args) throws Exception {
    String baseURLStr = "http://www.ietf.org/rfc/rfc3986.txt";
    String relativeURLStr = "rfc2732.txt";
    URL baseURL = new URL(baseURLStr);
    URL resolvedRelativeURL = new URL(baseURL, relativeURLStr);
    System.out.println("Base URL:" + baseURL);
    System.out.println("Relative URL  String:" + relativeURLStr);
    System.out.println("Resolved Relative URL:" + resolvedRelativeURL);
  }
}

上面的代码生成以下结果。

URLEncoder和URLDecoder

URLEncoder和URLDecoder类分别用于对字符串进行编码和解码。

import java.net.URLDecoder;
import java.net.URLEncoder;

public class Main {
  public static void main(String[] args) throws Exception {
    String source = "index&^%*a test for 2.5% and  &";
    String encoded = URLEncoder.encode(source, "utf-8");
    String decoded = URLDecoder.decode(encoded, "utf-8");
    System.out.println("Source: " + source);
    System.out.println("Encoded: " + encoded);
    System.out.println("Decoded: " + decoded);

  }
}

上面的代码生成以下结果。

例3

访问URL的内容

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class Main {
  public static String getURLContent(String urlStr) throws Exception {
    BufferedReader br = null;
    URL url = new URL(urlStr);
    InputStream ins = url.openStream();
    br = new BufferedReader(new InputStreamReader(ins));

    StringBuilder sb = new StringBuilder();
    String msg = null;
    while ((msg = br.readLine()) != null) {
      sb.append(msg);
      sb.append("n"); // Append a new line
    }
    br.close();
    return sb.toString();
  }

  public static void main(String[] args) throws Exception {
    String urlStr = "http://www..cn";
    String content = getURLContent(urlStr);
    System.out.println(content);
  }
}

上面的代码生成以下结果。

例4

向/从URL写入/读取数据的URL读取器/写入器类。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;

public class Main {
  public static String getURLContent(String urlStr)
      throws Exception {
    URL url = new URL(urlStr);
    URLConnection connection = url.openConnection();
    connection.setDoOutput(true);
    connection.connect();
    OutputStream ous = connection.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(ous));
    bw.write("index.html");
    bw.flush();
    bw.close();

    printRequestHeaders(connection);
    InputStream ins = connection.getInputStream();

    BufferedReader br = new BufferedReader(new InputStreamReader(ins));
    StringBuffer sb = new StringBuffer();
    String msg = null;
    while ((msg = br.readLine()) != null) {
      sb.append(msg);
      sb.append("n"); // Append a new line
    }
    br.close();
    return sb.toString();
  }
  public static void printRequestHeaders(URLConnection connection) {
    Map headers = connection.getHeaderFields();
    System.out.println(headers);
  }
  public static void main(String[] args) throws Exception {
    String urlStr = "http://www.www..cn";
    String content = getURLContent(urlStr);
    System.out.println(content);
  }
}

上面的代码生成以下结果。

Jar URLConnection

以下代码显示了如何获取JarURLConnection对象。

使用其方法来获取JAR特定数据。

String str = "jar:http://yoursite.com/my.jar!/my/Abc.class"; 
URL  url = new URL(str);
JarURLConnection  connection = (JarURLConnection)url.openConnection();
阅读全文
以上是VUE中文网为你收集整理的javaurlencode转码 Java URL全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们