2011-07-03 12 views
0
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) ; 
    } 
}   
}     

さて、このサーブレットがエラーなしで大丈夫コンパイルしても、サーバー に配備が、URLを介してアクセスしようとすると、このエラーを示しています:GETはこのURLによってサポートされていないなぜ「HTTPメソッドGETはこのURLでサポートされていません」というエラーが表示されますか?

HTTPメソッド

+0

可読性を高めるためにコードをインデントすることは許可されています。あなたのIDEは、キーを押すだけでIDEを自動的に実行することさえできるかもしれません。 –

答えて

8

メソッドでHttpServletResponseパラメータとHttpServletRequestパラメータを逆にしています。

サイドノート:オーバーライドされたメソッドに@Overrideアノテーションを使用すると、このためコンパイルエラーを引き起こす

+0

+1 - パラメータが逆になっているため、OPのコードはスーパークラスのメソッドをオーバーライドしていないため、(おそらく)全く呼び出されていません。 –

+1

doGet()およびdoPostのシグニチャは です。 'public void doGet(HttpServletRequest req、HttpServletResponse resp) { doPost(req、resp); }公共ボイドのdoPost(HttpServletRequestのREQ、HttpServletResponseのRESP) {//それが今動作着信要求 } ' – Rakesh

+0

ありがとう:)を処理します。 !まあ、私は初心者ですので、パラメータを逆にしてもうまくいくと思いました。しかし、私は隠された方法を忘れていました。 –

1

これは私に起こった(あなたは、少なくともJavaの1.5を使用していると仮定して)とき、私のメソッド呼び出し

"super.doGet(req、resp)"または "super.doPost(req、resp)"。

上記のdoGetとdoPostからスーパークラス呼び出しを削除した後、正常に動作しました。

これらのスーパークラスの呼び出しコードは、Eclipse IDEテンプレートによって挿入されました。

+0

これも私のために働いた。スーパーコールを削除します。 – wzbozon

関連する問題