为什么我得到“此方法不支持HTTP方法GET”错误?

时间:2011-07-03 07:04:17

标签: java servlets

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class LoginServlet extends HttpServlet
{
private void sendLoginPage (HttpServletResponse res, HttpServletRequest req, boolean error)
throws ServletException,IOException
{
    res.setContentType("text/html");
    PrintWriter o = res.getWriter();        
    o.println("<html><head><title>Sample Login Page</title></head><body>Welcome to Login Page : ");
    if (error)
    o.println("<fieldset><legend>Login Form : </legend>");
    o.println("Login Failed, Please Try Again");
    o.println("<form method="+"post"+">");
    o.println("<br/><input type="+"text"+"value="+"username"+"/>");
    o.println("<br/><input type="+"password"+"value="+""+"/>");
    o.println("<br/><input type="+"button"+"value="+"Submit"+"/>");
    o.println("</form></fieldset></body></html>");
}

public void doGet (HttpServletResponse res, HttpServletRequest req)
throws ServletException,IOException
{
    sendLoginPage ( res, null, false ) ;
}

public void doPost (HttpServletResponse res, HttpServletRequest req)
throws ServletException,IOException
{
    String username = req.getParameter("username");
    String password = req.getParameter("password");
    if ( username.equals("*******") && password.equals("*******") )
    {
        res.sendRedirect ("http://localhost:7001/ten/r1");
    }
    else 
    {
        sendLoginPage ( res, null, true ) ;
    }
}           
}                   

这个Servlet编译好没有任何错误,也可以部署在服务器上 但在尝试通过url访问它时显示此错误:

  

此网址不支持HTTP方法GET

2 个答案:

答案 0 :(得分:8)

您的方法上有HttpServletResponse和HttpServletRequest参数被反转。

附注:在重写方法上使用@Override注释将导致编译错误(假设您至少使用Java 1.5)

答案 1 :(得分:1)

当我的方法调用

时,这发生在我身上

“super.doGet(req,resp)”或“super.doPost(req,resp)”。

我从doGet和doPost中移除了上面的超类调用后,它运行正常。

事实上,这些超类调用代码是由Eclipse IDE模板插入的。