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

java中如何解析页面传入的url,第1张

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

}

//每个键值为一组

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

}

}

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"))

}

}

import java.net.URLDecoder

import java.net.URLEncoder

String strTest = "?=abc?中%1&2<3,4>"

strTest = URLEncoder.encode(strTest, "UTF-8")

System.out.println(strTest)

strTest = URLDecoder.decode(strTest,"UTF-8")

System.out.println(strTest)

 Java可以通过链接的mime类型来判断源文件的类型,从而得到源文件内容,示例如下:

URLConnection提供了两种方法可以猜测(根据实测结果,这个猜测是相当的准)数据的MIME类型。

  第一个是:

public static String guessContentTypeFromName(String name)

这个方法根据URL文件部分的后缀名来判断类型,跟之前我的方法一样。这个不能解决上面那个问题。

第二个是:public static String guessContentTypeFromStream(InputStream in)

这个方法是根据流的前面几个字节来判断类型,这个就不需要文件后缀名了,完全可以解决上面那个问题。

测试代码如下:BufferedInputStream bis = nullHttpURLConnection urlconnection = nullURL url = null                 url = new URL(strUrl)    urlconnection = (HttpURLConnection) url.openConnection()    urlconnection.connect()bis = new BufferedInputStream(urlconnection.getInputStream())    System.out.println("file type:"+HttpURLConnection.guessContentTypeFromStream(bis))    


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8112515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存