我正在尝试了解ServletRequest的工作原理。
例如: http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameterNames()
States“返回String对象的枚举,其中包含此请求中包含的参数的名称”
我已经看过这样的实例
Enumeration test_enum = request.getParameterNames();
StringBuilder sb = new StringBuilder();
while (test_enum.hasMoreElements()) {
String paramName = cleanString((String)test_enum.nextElement());
String paramValue = cleanString(request.getParameter(paramName));
if (alteredValues.containsKey(paramName)) paramValue = alteredValues.get(paramName);
try {
paramValue = URLEncoder.encode(paramValue, "UTF-8");
} catch (UnsupportedEncodingException e) {
}
sb.append("&").append(paramName).append("=").append(paramValue);
}
所以我理解这个目标是找到所有参数并以URL格式列出。
我不明白的是getParameterNames()如何在页面上找到参数,它是否仅查找具有name属性的任何元素并将其计为参数?
在这种情况下,什么是合格的参数?
答案 0 :(得分:1)
当您对服务器上的资源发出HTTP GET
或HTTP POST
请求时,您的浏览器会创建一个请求包。该请求包具有某些身体部位。在其中一个正文部分中,它包含您在提出请求之前输入的所有表单字段。
例如,此图片是示例HTTP GET请求包:
在上图中,您可以看到bookId=1234&author=Tan+Ah+Teck
行。该行是参数行。因此,在servlet中,您可以使用request.getParameterNames()
,它将为您提供所有参数的枚举。