首页 > 编程知识 正文

java解析url地址字符串(java解析url参数)

时间:2023-12-19 12:29:23 阅读:317658 作者:FKRJ

本文目录一览:

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处理抛出的异常。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。