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

Python011

java解析出url请求的路径和参数键值对类,第1张

解析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.length>1)

          {

                  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.length>1)

          {

                  if(arrSplit[1]!=null)

                  {

                  strAllParam=arrSplit[1]

                  }

          }

      }

     

    return strAllParam   

    }

    /**

     * 解析出url参数中的键值

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

     * @param URL  url地址

     * @return  url请求参数部分

     */

    public static Map<String, String> URLRequest(String URL)

    {

    Map<String, String> mapRequest = new HashMap<String, String>()

   

      String[] arrSplit=null

     

    String strUrlParam=TruncateUrlPage(URL)

    if(strUrlParam==null)

    {

        return mapRequest

    }

      //每个键值为一组 www.2cto.com

    arrSplit=strUrlParam.split("[&]")

    for(String strSplit:arrSplit)

    {

          String[] arrSplitEqual=null         

          arrSplitEqual= strSplit.split("[=]")

         

          //解析出键值

          if(arrSplitEqual.length>1)

          {

              //正确解析

              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=del&id=123&sort="    

       

        //url页面路径

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

       

        //url参数键值对

        String strRequestKeyAndValues=""       

        Map<String, 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:123key:sort,Value:key:action,Value:del

null

// 地址解析器 根据经纬度获取当前车辆所在地址

var gc = new BMap.Geocoder()

gc.getLocation(pointAdd, function(rs)

{

var addComp = rs.addressComponents

var adr="车辆: "+chepai+"\r\r"+"位于: "+addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber

//创建信息窗口,点击标注时显示标注对应的车牌号码以及当前地址

var infoWindow1 = new BMap.InfoWindow(adr)

marker.addEventListener("click", function(){this.openInfoWindow(infoWindow1)})

})