如何确定参数是从Java“发布”还是“获取”的?
在 ASP 中,有 和 属性,但在 Java 中。似乎我们只有一个集合,可以通过 ,等方式访问。request.form
request.queryString
request.getParamaterMap
getParametersNames
getParameterValues
有没有办法判断哪些值已经发布,哪些值已经在URL中指定?
附言:
我试图实现的是制作一个可以处理以下情况的页面
- 读取来自查询字符串的变量 (get)
- 阅读具有特定名称的单个帖子(例如“xml”)。
- 如果缺少该帖子,请阅读整个正文(带有 )。
request.getReader()
我正在使用雄猫6。
根据我到目前为止所看到的,如果我发出一个,发布的值不再出现在集合中,但是查询字符串参数仍然存在。request.getReader()
getParamater
另一方面,如果我发出任何方法,则返回空字符串。getParameters
getReader
似乎我不能吃蛋糕,也吃它。
所以,我想解决方案是folowwing:
- 使用 读取正文。
getReader
- 看看xml帖子是否存在(缺点,我必须手动解析正文。
- 如果是,请获取 http 消息正文并删除“xml=”部分。
- 如果不是,好吧,就拿身体吧。
- 通过以下方式读取查询字符串参数
request.getParameter
有什么更好的主意吗?
只是为了澄清事情。问题似乎是,通过您获得发布的值以及随URL传递的值,请考虑以下示例:getParameter
<%@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