doGet和doPost在一个类中

时间:2017-12-06 19:37:29

标签: java servlets post get

当我尝试在一个类中使用doGet和doPost并使用post方法传递参数时我得到了

  

HTTP状态405 - 此URL不支持HTTP方法GET

但是当我评论doGet时,它运作得很好。这是为什么? doGetdoPost不能在同一个类中使用?

这是类代码:

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>

2 个答案:

答案 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 方法不起作用