创建Servlet时“HTTP 405”? (doPost和doGet实现)

时间:2012-04-07 23:55:46

标签: java servlets

我有一个名为HelloServlet的servlet ..

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class HelloServlet extends HttpServlet
    {
public void doGet(ServletRequest request, ServletResponse response)
throws ServletException, IOException
{


        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.println("<html>");
        pw.println("<head>");
        pw.println("<title> Hello World </title>");
        pw.println("</head>");
        pw.println("<body>");
        pw.println("<h1> Hello, World!</h1>");
        pw.println("</body>");
        pw.println("</html>");
        pw.close();




}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
    doGet(request, response);
}
    }

我将它编译成.class文件,然后将它放在C:/tomcat/webapps/ALTest1/WEB-INF/classes/下的tomcat目录中 - 我制作了servlet映射(我将url-pattern设置为/hi)和servlet在C:/tomcat/webapps/ALTest1/WEB-INF/web.xml

中输入

一切正常但当我在http://localhost:8080/ALTest1/hi访问我的浏览器访问它时,我收到一条错误消息:

HTTP STATUS 405 - HTTP METHOD GET is not supported by this URL

...这很奇怪,因为我的doPost文件中有doGetHelloServlet.class个方法。因此,即使不支持doGet,我也有doPost方法来处理POST但它仍然无效。

2 个答案:

答案 0 :(得分:8)

 public void doGet(ServletRequest request, ServletResponse response)

那应该是HttpServletRequest和HttpServletResponse,就像在doPost中一样。

总是使用@Override,它会告诉你这个错误。

答案 1 :(得分:0)

似乎没有servlet java类的包。对于运行throw main methord的普通java程序,如果没有指定包,则java类在默认包中。但是,对于Web应用程序,您需要在web.xml中指定包名称。