0

我试图了解 ServletRequest 是如何工作的。

例如: http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameterNames()

状态“返回包含此请求中包含的参数名称的字符串对象的枚举”

我见过这样的一个例子

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 属性的任何元素并将其计为参数?

在这种情况下,什么有资格作为参数?

4

1 回答 1

1

当您向服务器上的资源发出HTTP GETHTTP POST请求时,您的浏览器会创建一个请求包。该请求包具有某些正文部分。在其中一个正文部分中,它包含您在提出请求之前输入的所有表单字段。

例如,此图像是一个示例 HTTP GET 请求包:

在此处输入图像描述

在上图中,您可以看到bookId=1234&author=Tan+Ah+Teck线条。该行是参数行。因此,在 servlet 中,您可以使用request.getParameterNames()which 将为您提供所有参数的枚举

于 2013-05-08T10:49:09.270 回答