如何在 Java HttpServlet 中从 POST 负载获取 HTTP 表单数据?

问题描述 投票:0回答:3

我尝试从

javax.servlet.http.HttpServletRequest
实例中提取表单数据。按照网上的推荐,我尝试了
request.getParameter(String paramKey)
,但是没有用。
request.getParameterValues()
request.getParameterNames()
request.getParameterMap()
也不返回任何表单数据。我想要的是带有表单数据的地图或其他获取它们的方法。

java servlets http-post
3个回答
8
投票

它会在您编写代码 request.getParameter() 的地方运行。 这个东西总是需要像下面提到的那样写在servlet的doGetPost()方法中。参考下面的例子。

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException  {

     String id = req.getParameter("realname");
     String password = req.getParameter("mypassword");
}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

    String id = req.getParameter("realname");
    String password = req.getParameter("mypassword");
}

0
投票

有几个方法需要重写。他们是

doPost(), doGet(), service()

doPost()
将在接收到的请求类型为 POST 时执行。

doGet()
将在接收到的请求类型为 GET 时执行。

如果你想要一个应该为两个帖子执行的方法,让你更好地使用

service()
方法。

例子:

 public class TestServlet{

    public void service( HttpServletRequest request, HttpServletResponse response ){

        request.getParameter( "paramterName" ).
    }
 }

0
投票

配置的东西很少。

  1. 需要为请求设置
    "Content-Type: multipart/form-data"
  2. 需要为班级设置
    @MultipartConfig
    注解
  3. 从 request.getPart("KEY") 中获取零件;
  4. 阅读流

这是我的例子

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/")
@MultipartConfig
public class TestServlet extends HttpServlet {

    private static final long serialVersionUID = 5589752892736045780L;

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
        //get part by key
        Part part = req.getPart("override");
        
        //read the part
        InputStream inputStream = part.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
        System.out.println(sb.toString());
        
        //set it to the response
        resp.setContentType("text/plain");
        resp.getWriter().write(sb.toString());
    }
}

这是邮递员请求

© www.soinside.com 2019 - 2024. All rights reserved.