java解析url地址字符串(java解析url參數)

本文目錄一覽:

java中如何解析頁面傳入的url

public class CRequest {

/**

* 解析出url請求的路徑,包括頁面

* @param strURL url地址

* @return url路徑

*/

public static String UrlPage(String strURL)

{

String strPage=null;

String[] arrSplit=null;

strURL=strURL.trim().toLowerCase();

arrSplit=strURL.split(“[?]”);

if(strURL.length()0)

{

if(arrSplit.length1)

{

if(arrSplit[0]!=null)

{

strPage=arrSplit[0];

}

}

}

return strPage;

}

/**

* 去掉url中的路徑,留下請求參數部分

* @param strURL url地址

* @return url請求參數部分

*/

private static String TruncateUrlPage(String strURL)

{

String strAllParam=null;

String[] arrSplit=null;

strURL=strURL.trim().toLowerCase();

arrSplit=strURL.split(“[?]”);

if(strURL.length()1)

{

if(arrSplit.length1)

{

if(arrSplit[1]!=null)

{

strAllParam=arrSplit[1];

}

}

}

return strAllParam;

}

/**

* 解析出url參數中的鍵值對

* 如 “index.jsp?Action=delid=123″,解析出Action:del,id:123存入map中

* @param URL url地址

* @return url請求參數部分

*/

public static MapString, String URLRequest(String URL)

{

MapString, String mapRequest = new HashMapString, String();

String[] arrSplit=null;

String strUrlParam=TruncateUrlPage(URL);

if(strUrlParam==null)

{

return mapRequest;

}

//每個鍵值為一組

arrSplit=strUrlParam.split(“[]”);

for(String strSplit:arrSplit)

{

String[] arrSplitEqual=null;

arrSplitEqual= strSplit.split(“[=]”);

//解析出鍵值

if(arrSplitEqual.length1)

{

//正確解析

mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);

}

else

{

if(arrSplitEqual[0]!=””)

{

//只有參數沒有值,不加入

mapRequest.put(arrSplitEqual[0], “”);

}

}

}

return mapRequest;

}

}

public class TestCRequest {

/**用於測試CRequest類

* @param args

*/

public static void main(String[] args) {

// 請求url

String str = “index.jsp?Action=delid=123sort=”;

//url頁面路徑

System.out.println(CRequest.UrlPage(str));

//url參數鍵值對

String strRequestKeyAndValues=””;

MapString, String mapRequest = CRequest.URLRequest(str);

for(String strRequestKey: mapRequest.keySet()) {

String strRequestValue=mapRequest.get(strRequestKey);

strRequestKeyAndValues+=”key:”+strRequestKey+”,Value:”+strRequestValue+”;”;

}

System.out.println(strRequestKeyAndValues);

//獲取無效鍵時,輸出null

System.out.println(mapRequest.get(“page”));

}

}

用java獲取URL路徑時出現非法字符

經常會在瀏覽器的地址欄里看到這樣的字符串%E6%96%87%E6%A1%A3

這就是被編碼後的字符串,下面就討論一下java 的url編碼與解碼問題

java.net.URLDecoder.decode(String s,String enc);

將application/x-www-form-urlencoded字符串轉換成普通字符串。

java.net.URLEncoder.decode(String s,String enc);

將普通字符串轉換成application/x-www-form-urlencoded字符串

代碼示例:

import java.net.URLDecoder;

import java.net.URLEncoder;

public class URLDecoderTest {

public static void main(String[] args) throws Exception {

//將application/x-www-form-urlencoded字符串

//轉換成普通字符串

//必須強調的是編碼方式必須正確,如baidu的是gb2312,而google的是UTF-8

String keyWord = URLDecoder.decode(“%E6%96%87%E6%A1%A3”, “gb2312”);

System.out.println(keyWord);

//將普通字符串轉換成

//application/x-www-form-urlencoded字符串

//必須強調的是編碼方式必須正確,如baidu的是gb2312,而google的是UTF-8

String urlStr = URLEncoder.encode(“文檔”, “gb2312”);

System.out.println(urlStr);

}

}

java解析出url請求的路徑和參數鍵值對類

解析url,本想用正則表達式處理,但正則表達式速度較慢。用split處理一下就可以了。

 

package RequestPackage;

import java.util.HashMap;

import java.util.Map;

public class CRequest {

    /**

     * 解析出url請求的路徑,包括頁面

     * @param strURL url地址

     * @return url路徑

     */

    public static String UrlPage(String strURL)

    {

    String strPage=null;

      String[] arrSplit=null;

     

      strURL=strURL.trim().toLowerCase();

     

      arrSplit=strURL.split(“[?]”);

      if(strURL.length()0)

      {

          if(arrSplit.length1)

          {

                  if(arrSplit[0]!=null)

                  {

                  strPage=arrSplit[0];

                  }

          }

      }

     

    return strPage;   

    }

    /**

     * 去掉url中的路徑,留下請求參數部分

     * @param strURL url地址

     * @return url請求參數部分

     */

    private static String TruncateUrlPage(String strURL)

    {

    String strAllParam=null;

      String[] arrSplit=null;

     

      strURL=strURL.trim().toLowerCase();

     

      arrSplit=strURL.split(“[?]”);

      if(strURL.length()1)

      {

          if(arrSplit.length1)

          {

                  if(arrSplit[1]!=null)

                  {

                  strAllParam=arrSplit[1];

                  }

          }

      }

     

    return strAllParam;   

    }

    /**

     * 解析出url參數中的鍵值對

     * 如 “index.jsp?Action=delid=123″,解析出Action:del,id:123存入map中

     * @param URL  url地址

     * @return  url請求參數部分

     */

    public static MapString, String URLRequest(String URL)

    {

    MapString, String mapRequest = new HashMapString, String();

   

      String[] arrSplit=null;

     

    String strUrlParam=TruncateUrlPage(URL);

    if(strUrlParam==null)

    {

        return mapRequest;

    }

      //每個鍵值為一組 

    arrSplit=strUrlParam.split(“[]”);

    for(String strSplit:arrSplit)

    {

          String[] arrSplitEqual=null;         

          arrSplitEqual= strSplit.split(“[=]”);

         

          //解析出鍵值

          if(arrSplitEqual.length1)

          {

              //正確解析

              mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]);

             

          }

          else

          {

              if(arrSplitEqual[0]!=””)

              {

              //只有參數沒有值,不加入

              mapRequest.put(arrSplitEqual[0], “”);       

              }

          }

    }   

    return mapRequest;   

    }

   

}

 

測試類

 

 

package RequestPackage;

import java.util.Map;

public class TestCRequest {

    /**用於測試CRequest類

     * @param args

     */

    public static void main(String[] args) {

    // 請求url

        String str = “index.jsp?Action=delid=123sort=”;    

       

        //url頁面路徑

        System.out.println(CRequest.UrlPage(str));

       

        //url參數鍵值對

        String strRequestKeyAndValues=””;       

        MapString, String mapRequest = CRequest.URLRequest(str);

       

        for(String strRequestKey: mapRequest.keySet()) {

            String strRequestValue=mapRequest.get(strRequestKey);

            strRequestKeyAndValues+=”key:”+strRequestKey+”,Value:”+strRequestValue+”;”;           

          

        }

        System.out.println(strRequestKeyAndValues);

       

        //獲取無效鍵時,輸出null

        System.out.println(mapRequest.get(“page”));

    }

}

 

 

測試代碼運行效果

 

index.jsp

key:id,Value:123;key:sort,Value:;key:action,Value:del;

null

解析url 得到返回值,java

try{

// URL url=new URL(“;q=58.214.5.162”);

URL url=new URL(“”+ip);

HttpURLConnection connect=(HttpURLConnection)url.openConnection();

InputStream is = connect.getInputStream();

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

byte[] buff = new byte[256];

int rc = 0;

while ( (rc = is.read(buff, 0, 256)) 0) {

outStream.write(buff, 0, rc);

}

byte[] b = outStream.toByteArray();

//關閉

outStream.close();

is.close();

connect.disconnect();

String address =new String(b);

if(address.indexOf(“省”)!=-1)

{

ipprovince =address.substring(0,address.indexOf(“省”)+1);

System.out.println(“省地址為:”+ipprovince);

}else if(address.indexOf(“區”)!=-1)

{

ipprovince =address.substring(0,address.indexOf(“區”)+1);

System.out.println(“省地址為:”+ipprovince);

}else

{

ipprovince =

address.substring(0,address.indexOf(“市”)+1);

System.out.println(“省地址為:”+ipprovince);

}

}catch(Exception e){

e.printStackTrace();

}

java 從一個URL中提取特定子字符串保存

public class Test{

public static void main(String[] args){

String url=””;

//首先去掉開頭部分如:ftp://,http://等

url=url.substring(url.indexOf(“//”)=0?(url.indexOf(“//”)+2):0);

//查找出一個/出現的地方

int index=url.indexOf(“/”)0?url.length():url.indexOf(“/”);

//前面部分

String before=url.substring(0,index);

//後面部分

String end;

if(index==url.length())//說明沒有後面部分

end=””;

else

end=url.substring(index+1);

System.out.println(url);

System.out.println(before);

System.out.println(end);

}

}

java如何將字符串轉化為URL

將字符串轉換成URL可以使用創建一個URL對象,並將字符串賦給這個URL對象。

參考代碼如下:

String str = “填寫字符串的鏈接地址”;

try {

URL url = new URL(str);

} catch (MalformedURLException e) {

e.printStackTrace();

}

注意,創建URL對象會有異常,所以使用try處理拋出的異常。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/304278.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:05
下一篇 2025-01-01 11:05

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • cmd看地址

    本文將從多個方面詳細闡述cmd看地址,包括如何查看本機IP地址、如何查看路由器IP、如何查看DNS服務器IP等等。 一、查看本機IP地址 要查看本機IP地址,首先需要打開cmd窗口…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29

發表回復

登錄後才能評論