Get 方法在 Servlet 中有效,POST 方法无效
Get method works in Servlet, POST method does not
我是一名编码新手,正在尝试建立一个可以使用 post 方法收集信息的 Web 表单。
我使用在线教程创建了以下 servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class HelloForm extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Using GET Method to Read Form Data";
String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " +
"transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<ul>\n" +
" <li><b>First Name</b>: "
+ request.getParameter("first_name") + "\n" +
" <li><b>Last Name</b>: "
+ request.getParameter("last_name") + "\n" +
"</ul>\n" +
"</body></html>");
}
//Method to handle POST method request.
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
我的 html 表格如下。当我将方法更改为 GET - 表单有效。但是,当我将方法更改为 POST 时,我得到 HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST。
<html>
<body>
<form action="HelloForm" method="POST">
First Name: <input type="text" name="first_name">
<br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
我按照其他一些线程中的建议在 post 方法上尝试了 @Override - 但那没有用。
有人可以提出可能出了什么问题吗?谢谢
您的代码包含一些错误,因为该代码给出了错误。
public void doPost(HttpServletRequest 请求,
HttpServletResponse 响应)
抛出 ServletException,IOException {
doGet(请求,响应); //方法调用不正确
}
如果您正在使用 tomcat,您可以试试这个
<servlet-mapping>
...
<http-method>POST</http-method>
</servlet-mapping>
除了您的 web.xml servlet 配置中的 servlet-name 和 url-mapping。
您需要在POST函数中编写代码。
而且,你为什么不用JSP?在处理 servlet 时使用 MVC 方法是一个很好的习惯。
即,模型 - 视图 - 控制器
将代码传递给 JSP(视图)并从那里生成必要的代码。
祝你好运!
我是一名编码新手,正在尝试建立一个可以使用 post 方法收集信息的 Web 表单。
我使用在线教程创建了以下 servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class HelloForm extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Using GET Method to Read Form Data";
String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " +
"transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<ul>\n" +
" <li><b>First Name</b>: "
+ request.getParameter("first_name") + "\n" +
" <li><b>Last Name</b>: "
+ request.getParameter("last_name") + "\n" +
"</ul>\n" +
"</body></html>");
}
//Method to handle POST method request.
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
我的 html 表格如下。当我将方法更改为 GET - 表单有效。但是,当我将方法更改为 POST 时,我得到 HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST。
<html>
<body>
<form action="HelloForm" method="POST">
First Name: <input type="text" name="first_name">
<br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
我按照其他一些线程中的建议在 post 方法上尝试了 @Override - 但那没有用。
有人可以提出可能出了什么问题吗?谢谢
您的代码包含一些错误,因为该代码给出了错误。
public void doPost(HttpServletRequest 请求, HttpServletResponse 响应) 抛出 ServletException,IOException { doGet(请求,响应); //方法调用不正确 }
如果您正在使用 tomcat,您可以试试这个
<servlet-mapping>
...
<http-method>POST</http-method>
</servlet-mapping>
除了您的 web.xml servlet 配置中的 servlet-name 和 url-mapping。
您需要在POST函数中编写代码。
而且,你为什么不用JSP?在处理 servlet 时使用 MVC 方法是一个很好的习惯。 即,模型 - 视图 - 控制器
将代码传递给 JSP(视图)并从那里生成必要的代码。
祝你好运!