[英]How to read first key/value pair in a query string in java servlets?
我有這個servlet,可以在查詢字符串中接受動態參數名稱,但是查詢字符串還通過一些javascript插件附加了其他參數。
這是請求方案:
http://foo.com/servlet?[dynamic param]=[param value]&[other params]=[other values]...
我希望能夠讀取第一個參數,因此servlet將根據動態參數名稱執行其執行,如果無法識別參數名稱,則不執行任何操作。 我100%確信第一個參數名稱始終是動態名稱,因為我通過ajax調用來控制查詢字符串的構造。
我遇到的問題是HttpRequestServlet.getParameterMap()
或.getParameterNames()
排序並不總是與查詢字符串的順序相對應,因此,根據參數的頻率,servlet在一半/大部分時間內不執行任何操作。
如何始終讀取查詢字符串中的第一個參數?
您可以使用HttpServletRequest#getQueryString(),然后基於&
拆分值&
並獲取第一對查詢參數名稱-值,然后基於=
拆分
樣例代碼:
String[] parameters = URLDecoder.decode(request.getQueryString(), "UTF-8").split("&");
if (parameters.length > 0) {
String firstPair = parameters[0];
String[] nameValue = firstPair.split("=");
System.out.println("Name:" + nameValue[0] + " value:" + nameValue[1]);
}
閱讀有關URL解碼的更多信息
您可以更改該網址以讀取如下內容
http://foo.com/servlet/dynamicParam/paramValue/?otherParam=otherValue
該URL結構更好地符合HTTP資源的思想,並且在參數順序很重要的時候您不再有問題。 如果您使用現代MVC框架,則上面的操作非常容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.