我试图从一个javax.servlet.http.HttpServletRequest
实例中提取表单数据。根据网上的建议,我尝试了request.getParameter(String paramKey)
,但是没有成功。 request.getParameterValues()
、request.getParameterNames()
和request.getParameterMap()
也没有返回任何表单数据。我想要一个包含表单数据的Map或者其他获取它们的方法。
我试图从一个javax.servlet.http.HttpServletRequest
实例中提取表单数据。根据网上的建议,我尝试了request.getParameter(String paramKey)
,但是没有成功。 request.getParameterValues()
、request.getParameterNames()
和request.getParameterMap()
也没有返回任何表单数据。我想要一个包含表单数据的Map或者其他获取它们的方法。
在编写代码 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");
}
需要配置一些内容。
"Content-Type: multipart/form-data"
@MultipartConfig
注释request.getPart("KEY")
获取部分;这是我的示例
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());
}
}
你需要覆盖几个方法,它们是doPost()
、doGet()
和service()
。
doPost()
会在接收到POST请求时执行。
doGet()
会在接收到GET请求时执行。
如果你想要一个单一的方法来处理post和get请求,最好使用service()
方法。
示例:
public class TestServlet{
public void service( HttpServletRequest request, HttpServletResponse response ){
request.getParameter( "paramterName" ).
}
}