java - Java如何判断一个参数是 "posted"还是 "geted"?

标签 java http post get

在 ASP 中,有 request.formrequest.queryString 属性,但在 Java 中。看起来我们只有一个集合,可以通过 request.getParamaterMapgetParametersNamesgetParameterValues 等访问。

是否有某种方法可以判断哪些值已发布以及哪些值已在 URL 中指定?

<小时/>

PS:

我想要实现的是制作一个可以处理以下情况的页面

  • 读取来自查询字符串的变量 (get)
  • 阅读具有特定名称(例如“xml”)的单个帖子。
  • 如果该帖子丢失,请阅读全文(使用 request.getReader())。

我使用的是 tomcat 6。

根据我到目前为止所看到的,如果我发出 request.getReader(),发布的值不再出现在 getParamater 集合中,但查询字符串参数还在那里。

另一方面,如果我发出任何 getParameters 方法,getReader 将返回空字符串。

看来鱼与熊掌不可兼得。

所以,我想解决方案如下:

  • 使用 getReader 读取正文。
  • 查看 xml 帖子是否存在(缺点是,我必须手动解析正文。
  • 如果是,获取http消息正文并去掉“xml=”部分。
  • 如果不是,那么,就获取尸体吧。
  • 通过request.getParameter读取查询字符串参数

还有更好的主意吗?

  • PS:有谁知道如何使用相同的方法解析正文 由 HttpServlet 使用?
  • PS:Here是一个解码ASP函数。我可以重写它吗 Java?
  • PS:还有found (目前没有机器可以测试)

只是为了澄清事情。问题似乎在于,使用 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

最佳答案

HttpServletRequest.getMethod() :

Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT. Same as the value of the CGI variable REQUEST_METHOD.

您需要做的就是:

boolean isPost = "POST".equals(request.getMethod());

此外,我真的很困惑为什么您不简单地使用 request.getParameter("somename") 来检索作为请求参数发送的值。这个方法returns the parameter regardless of whether the request was sent via a GET or a POST :

Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.

这比尝试自己解析 getQueryString() 简单得多。

关于java - Java如何判断一个参数是 "posted"还是 "geted"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940948/

相关文章:

java - 从类中获取List时出现空指针异常

java - 如何为抽象方法创建切入点

java - gradle 构建失败,jooq 配置 : java. lang.ClassNotFoundException : com. mysql.jdbc.Driver

java - HTTP POST 请求与 Android 崩溃

javascript - 从 Firefox 扩展与服务器通信

reactjs - 如何在 useEffect 中使用新鲜状态,但仅在卸载时执行清理

java - 如何拆分数组中的字符串

php - 在没有API的情况下如何测试客户端?

android - Volley 使用 StringRequest 不调用 getParams 以在第一次后发送 POST 请求参数

json - jQuery 不处理来自 AJAX POST 的 JSON 响应