簡體   English   中英

如何在Java Servlet中讀取查詢字符串中的第一個鍵/值對?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM