热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文目录一览:1、java中如何解析页面传入的url

本文目录一览:


  • 1、java中如何解析页面传入的url


  • 2、用java获取URL路径时出现非法字符


  • 3、java解析出url请求的路径和参数键值对类


  • 4、解析url 得到返回值,java


  • 5、java 从一个URL中提取特定子字符串保存


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


推荐阅读
  • 集合排序TreeSet
    从视频中学得:集合排序需要注意两点:(1)传入对象要自己能排序(自己提供排序方法); ... [详细]
  • 容器和类型推演scala为Java的泛型容器提供类型推演和类型安全型。在scala中,import语句中的下划线,等价于Java里的星号(*)。如果下划线不是跟在包名后, ... [详细]
  • 锁优化有3个方向:1.减少持有锁的时间:例如,将CPU密集和IO密集的任务移到锁外,可以有效减少持有锁的时间, ... [详细]
  • 开发笔记:基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于javaeclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏相关的知识,希望对你有一定的参考价 ... [详细]
  • java 调用webDriver实现访问网页(谷歌浏览器)
    首先下载谷歌浏览器,及谷歌浏览器webDriver,两个版本要对应上,版本对应关系如下:如果版本对应不对的话,就会出现下面的 ... [详细]
  • Springboot 返回数据提示语国际化  实现语言的自由切换(AOP实现)
    前言本篇内容:提示语的国际化返回,自定义多语言。本文使用aop方式,拦截接口返回的数据,进行转换。 ... [详细]
  • 由于2018年5月29日微信支付HTTPS服务器更换证书,为了检查服务器是否支持了DigiCert的证书,特地手动些了以下验证方法:def ... [详细]
  • 1、set自动注入bean有个属性autowireautowire”byType”自己去找对应的注入。也就是把原来的 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了非关系型数据库(NOSQL)-Redis相关的知识,希望对你有一定的参考价值。整理一波Redis ... [详细]
  • OpenFire源码学习之九:OF的缓存机制
    关于缓存,openfire存储到了本地JVM中。本人认为这样并不是很好。以后会讲一篇Redis的缓存。实际应用中,本人讲openfire诸多缓存内容放置了redis中。这里就看看openfi ... [详细]
  • Java基础——泛型与集合
    第八章泛型与集合第一节泛型定义:泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这 ... [详细]
  • 文章目录💖jsp九大内置对象✨使用方法💖jsp四大域对象✨代码实战✨测试💖jsp中out流输出流和response.getwrite ... [详细]
  • GoJS入门
    转载:https:www.jianshu.comp9001d6b292d8原文在这里:GetStartedwithGoJSGoJS是一个实现交互式图表 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloud-Eureka相关的知识,希望对你有一定的参考价值。原文:https://xsxy007.gith ... [详细]
  • 开发笔记:Android自定义控件
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android自定义控件相关的知识,希望对你有一定的参考价值。我们在开发 ... [详细]
author-avatar
手机用户2502906277
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有