gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:12 25 4
gpt4 key购买 nike

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

有什么方法可以判断哪些值已发布,哪些已在 URL 中指定?


附言:

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

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

我正在使用 tomcat 6。

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

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

看来我不能把蛋糕也吃掉了。

所以,我猜解决方案是以下方法:

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

有更好的主意吗?

  • 附言:有没有人知道如何使用相同的方法解析正文HttpServlet 使用?
  • 附言:Here是解码ASP函数。我可以重写它吗Java?
  • 附言:还有 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/1009844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com