我正在向我的
POST
Tomcat 8.0 Servlet 3.1 Web 应用程序发送 localhost
请求,但 request.getParameter("")
返回我 null
。
我正在使用 PostMan 来执行我的
POST
请求。在 java 方面,我调用 request.getParameter("code")
,这给了我 null
。 qwe
字段也是如此。我没有使用任何框架。它是原始 servlet。这只是一个后端,所以一切都是关于处理数据和响应客户端。
如果我使用
"x-www-form-urlencoded"
,我可以通过getParameter()
调用检索参数,但我仍然想知道为什么我无法获取form-data
。
谢谢。
感谢@cjstehno,
当他说
"form-data"
实际上是一个多部分数据时,我尝试将其读取为多部分数据,但要记住 isFormField()
方法来区分文件和参数。因此,从原始 servlet 中,人们可以通过下面的代码读取form-data
。从性能角度来看,我很确定这可能会得到改善。
try {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
FileItemStream item = iter.next();
String name = item.getFieldName();
if (item.isFormField()) {
String value = Streams.asString(item.openStream());
}
}
} catch (Exception ex) {}
如果您正在开发登录页面并使用 JavaScript 文件获取值
public class LoginCredentials extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain"); // Set content type to plain text or application/json as needed
try {
// Check if the request is multipart/form-data
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a new ServletFileUpload instance
ServletFileUpload upload = new ServletFileUpload();
// Parse the request to get the list of FileItemStream objects
FileItemIterator iter = upload.getItemIterator(request);
// Iterate over the items
while (iter.hasNext()) {
FileItemStream item = iter.next();
String fieldName = item.getFieldName();
InputStream inputStream = item.openStream();
if (item.isFormField()) {
// This is a regular form field
String value = IOUtils.toString(inputStream, "UTF-8");
if ("user".equals(fieldName)) {
// Assuming 'user' is the name attribute of the username input field
String username = value;
System.out.println("Username: " + username);
} else if ("pwd".equals(fieldName)) {
// Assuming 'pwd' is the name attribute of the password input field
String password = value;
System.out.println("Password: " + password);
}
}
}
// Here you can add your authentication logic based on username and password
// For demonstration purposes, let's just send a success message back
response.getWriter().write("Login successful");
} else {
response.getWriter().write("Multipart form data expected");
}
} catch (Exception e) {
e.printStackTrace();
response.getWriter().write("Error occurred while processing login");
}
}
}