在ASP中,有request.form
和request.queryString
屬性,但是在Java中。好像我們只有一個集合,它可以通過以下方式訪問request.getParamaterMap
,getParametersNames
,getParameterValues
等如何確定參數是否已從Java「發佈」或「創建」?
是否有某種方式來告訴其價值已張貼的,哪些是在URL中指定?
PS:
我試圖做到的,是做一個網頁,可以處理以下情況
- 閱讀從查詢字符串傳來的變量(獲得)
- 閱讀具有特定名稱的單個帖子(例如「xml」)。
- 如果該帖子丟失,請閱讀全文(使用
request.getReader()
)。
我使用Tomcat 6
據我到目前爲止看到的,如果我發出了一個request.getReader()
,公佈值不再出現在getParamater
集合中,但是查詢字符串參數仍然存在。
另一方面,如果我發出任何getParameters
方法,getReader
返回空字符串。
好像我不能吃蛋糕,也吃它。
所以,我猜解是folowwing:
- 閱讀體
getReader
。 - 若見XML後有(負面,我必須手動解析身體。
- 如果是,得到HTTP消息體,擺脫了「XML =」部分。
- 如果不是,那麼,就得到身體
- 通過
request.getParameter
閱讀查詢字符串參數的任何更好的主意
只是爲了澄清的事情。這個問題似乎是與getParameter
你能張貼值以及與URL傳遞的值,請看下面的例子:
<%@page import="java.util.*"%>
<%
Integer i;
String name;
String [] values;
for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
name = (String) e.nextElement();
values = request.getParameterValues(name);
for (i=0; i < values.length; i ++) {
out.println(name + ":" + values[i] + "<br/>");
}
}
%>
<html>
<head><title>param test</title>
</head>
<body>
<form method="post" action="http://localhost:8080/jsp_debug/param_test.jsp?data=from_get">
<input type="text" name="data" value="from_post">
<input type="submit" value="ok">
</form>
</body>
</html>
這段代碼的輸出是
data:from_get
data:from_post
...
好像爲了找到哪個參數來自哪裏,我必須檢查request.getQueryString
。
什麼服務器您使用的?太陽HttpServer? – gubby 2009-06-17 22:37:14
您應該獲取整個URL並反序列化參數。如果你想要的參數在那裏,那就是一個GET。如果它不存在但存在,那麼它是一個POST參數。 – PSyLoCKe 2017-04-10 15:46:19