java怎样获取url参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.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"));

参考技术A Servlet里面用request.getParameter("参数名");取到 参考技术B String url = request.getScheme()+"://"; //请求协议 http 或 https
url+=request.getHeader("host"); // 请求服务器
url+=request.getRequestURI(); // 工程名
if(request.getQueryString()!=null) //判断请求参数是否为空
url+="?"+request.getQueryString(); // 参数

java获取浏览器地址栏地址

我是用frame做的页面,在后台request.getRequestURL()只能获取当前请求的URL而不是地址栏里的地址,我如何获取地址栏里的URL呢,不要js获取

明确的告诉你,request里封装的是这次请求包含的内容,包括请求来的URL,参数,请求类型,等等,你要想取到与这次请求无关的东西,比如你说的地址栏中的地址,这个我没实现过,说一下思路,你用JS取得它,把它当成一个参数传入后台,可以在请求地址后面加?后面跟参数比如?urls = "这里就是你JS取得的那个URL"。。。具体js怎么取得地址栏的地址,这个你百度一下,应该有结果,请记住,与请求无关的东西,用JAVA是取不到的,所以要借助JS 参考技术A request提供的方法是获取当前页面的地址
它并没有特定的方法去取浏览器地址栏的地址
不过我们可以根据方法进行变态
你使用Frame做页面,可以将主页面的打开方式①(也就是说地址栏会有地址显示的页面)和次页面打开方式②(地址栏不显示)做以区别,将方式①这种进行取值request.getRequestURL()。存到session中。想获得这个东西就取session的值。
参考技术B 你把frame 中的地址栏保存到input 中,作为一个隐藏,在通过request.getParameter() 就可以获取了

以上是关于java怎样获取url参数的主要内容,如果未能解决你的问题,请参考以下文章

java获取浏览器地址栏地址

java HttpUrlConnection的post()方法的参数没有加在url的后边

java怎么获取url上的参数

java 获取url及url参数解析

ASP.NET如何获取url参数

如何获取没有值的 URL 参数?