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


推荐阅读
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 本文深入探讨了Java枚举类型的使用与实践,详细解析了枚举的基本用法及其在实际开发中的应用。首先介绍了枚举作为常量的替代方案,自JDK 1.5起,通过枚举可以更加简洁、安全地定义常量,避免了传统方式中可能出现的错误。此外,文章还探讨了枚举在实现单例模式、状态机等场景中的优势,并提供了多个实际案例,帮助开发者更好地理解和运用这一强大的语言特性。 ... [详细]
  • 在Java编程中,初学者常会遇到“无法从静态上下文中引用非静态变量this”的编译错误。此问题根源在于对静态(static)与非静态成员特性的理解不足。静态成员属于类本身,而非特定对象实例,因此在静态方法或静态初始化块中直接访问非静态成员会导致编译失败。解决这一问题的关键是将相关代码移至非静态方法中,或通过创建类的实例来间接访问非静态成员。 ... [详细]
  • 为了优化直播应用底部聊天框的弹出机制,确保在不同设备上的布局稳定性和兼容性,特别是在配备虚拟按键的设备上,我们对用户交互流程进行了调整。首次打开应用时,需先点击首个输入框以准确获取键盘高度,避免直接点击第二个输入框导致的整体布局挤压问题。此优化通过调整 `activity_main.xml` 布局文件实现,确保了更好的用户体验和界面适配。 ... [详细]
  • 本文深入探讨了 Python Watchdog 库的使用方法和应用场景。通过详细的代码示例,展示了如何利用 Watchdog 监控文件系统的变化,包括文件的创建、修改和删除等操作。文章不仅介绍了 Watchdog 的基本功能,还探讨了其在实际项目中的高级应用,如日志监控和自动化任务触发。读者将能够全面了解 Watchdog 的工作原理及其在不同场景下的应用技巧。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 在Spring框架中,基于Schema的异常通知与环绕通知的实现方法具有重要的实践价值。首先,对于异常通知,需要创建一个实现ThrowsAdvice接口的通知类。尽管ThrowsAdvice接口本身不包含任何方法,但开发者需自定义方法来处理异常情况。此外,环绕通知则通过实现MethodInterceptor接口来实现,允许在方法调用前后执行特定逻辑,从而增强功能或进行必要的控制。这两种通知机制的结合使用,能够有效提升应用程序的健壮性和灵活性。 ... [详细]
  • Java 8 引入了 Stream API,这一新特性极大地增强了集合数据的处理能力。通过 Stream API,开发者可以更加高效、简洁地进行集合数据的遍历、过滤和转换操作。本文将详细解析 Stream API 的核心概念和常见用法,帮助读者更好地理解和应用这一强大的工具。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 深入学习 Python 中的 xlrd 模块:掌握 Excel 文件读取技巧
    本文深入探讨了 Python 中的 xlrd 模块,重点介绍了如何高效读取 Excel 文件(包括 xlsx 和 xls 格式)。同时,文章还详细讲解了 xlwt 模块在 Excel 文件写操作中的应用。此外,文中列举了常见单元格数据类型及其处理方法,为读者提供了全面的实践指导。 ... [详细]
  • 在 Python 中,魔法方法 `__dict__` 和 `__getattr__` 具有重要的作用和灵活的应用。`__dict__` 是一个用于存储对象属性的字典,其中键为属性名,值为对应的属性值。通过 `__dict__`,可以动态地访问和修改对象的属性。而 `__getattr__` 方法则在尝试访问对象中不存在的属性时被调用,提供了一种优雅的处理方式,避免了属性访问错误。这两个魔法方法在实现复杂的数据结构和动态行为时尤为有用。 ... [详细]
  • 本文介绍了一种使用HashSet迭代器的方法来验证字符串集合中的元素。具体而言,通过迭代器遍历名为“名称”的字符串哈希集,并删除其中包含任何非大写字母的项。该方法能够高效地过滤出不符合条件的字符串,确保集合中仅保留纯大写字母的条目。 ... [详细]
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社区 版权所有