【发布时间】:2010-09-05 12:50:40
【问题描述】:
PHP 的$_POST 的Java 等价物是什么?在网上搜索了一个小时后,我仍然没有更近的地方。
【问题讨论】:
PHP 的$_POST 的Java 等价物是什么?在网上搜索了一个小时后,我仍然没有更近的地方。
【问题讨论】:
这是一个简单的例子。我不喜欢 html 或 servlet,但你应该明白。
希望对你有所帮助。
<html>
<body>
<form method="post" action="/myServlet">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" />
</form>
</body>
</html>
现在是 Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String userName = request.getParameter("username");
String password = request.getParameter("password");
....
....
}
}
【讨论】:
您的HttpServletRequest 对象有一个getParameter(String paramName) 方法,可用于获取参数值。 http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)
【讨论】:
POST 变量应该可以通过请求对象访问:HttpRequest.getParameterMap()。例外情况是表单发送多部分 MIME 数据(表单具有 enctype="multipart/form-data")。在这种情况下,您需要使用 MIME 解析器解析字节流。您可以自己编写或使用现有的,例如 Apache Commons File Upload API。
【讨论】:
multipate/form-data 的标准支持。请参阅Java EE 6 API 和/或this blog post
前面的答案是正确的,但请记住在输入字段(html 表单)中使用 name 属性,否则您将一无所获。示例:
<input type="text" id="username" /> <!-- won't work -->
<input type="text" name="username" /> <!-- will work -->
<input type="text" name="username" id="username" /> <!-- will work too -->
所有这些代码都是 HTML 有效的,但是使用 getParameter(java.lang.String) 你需要在你想要接收的所有参数中设置 name 属性。
【讨论】:
为了获取所有的 post 参数,有一个 Map,其中包含请求参数名称作为键,参数值作为键。
Map params = servReq.getParameterMap();
并获取具有已知名称的参数正常
String userId=servReq.getParameter("user_id");
【讨论】: