当我尝试在一个类中使用doGet和doPost并使用post方法传递参数时我得到了
HTTP状态405 - 此URL不支持HTTP方法GET
但是当我评论doGet时,它运作得很好。这是为什么? doGet
和doPost
不能在同一个类中使用?
这是类代码:
package pl.javastart.servlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class wypisz_parametry extends HttpServlet {
private static final long serialVersionUID = 1321321321L;
/*public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String parametr1 = request.getParameter("parametr1");
String parametr2 = request.getParameter("parametr2");
String parametr3 = request.getParameter("parametr3");
out.println("Wczytanie 3 parametrow z zadania :");
out.println(parametr1);
out.println(parametr2);
out.println(parametr3);
}*/
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Wczytanie 3 parametrow z zadania :");
out.println(request.getParameter("parametr1"));
out.println(request.getParameter("parametr2"));
out.println(request.getParameter("parametr3"));
}
}
和html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Przyklad POST</TITLE>
</HEAD>
<H1 ALIGN="CENTER">Przyklad HTTP POST</H1>
<FORM ACTION="http://localhost:8080/Parameters/wypisz_parametry"
METHOD="POST">
Parametr 1:
<INPUT TYPE="TEXT" NAME="parametr1"><BR>
Parametr 2:
<INPUT TYPE="TEXT" NAME="parametr2"><BR>
Parametr 3:
<INPUT TYPE="TEXT" NAME="parametr3"><BR>
<INPUT TYPE="SUBMIT" VALUE="Wyslij">
</FORM>
</BODY>
</HTML>
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>Parameters</servlet-name>
<servlet-class>pl.javastart.servlets.wypisz_parametry</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Parameters</servlet-name>
<url-pattern>/wypisz_parametry</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:0)
doGet()
和doPost()
方法都可以调用相同的servlet。所以问题绝对是别的。也许web.xml
中的网址映射存在问题。
映射至少存在一个问题: 在页面上我们有:ACTION =“http:// localhost:8080 / Parameters / wypisz_parametry” 但是在web.xml中我们期望:ACTION =“http:// localhost:8080 / wypisz_parametry”
使用相对路径也会更好:ACTION =“/ wypisz_parametry”
答案 1 :(得分:-2)
在 html 代码操作部分中,您已将该方法称为 post。当您选择 post 方法时,get 方法不起作用