2012-03-13 13 views
1

ページを正常に動作させるには問題がありますが、データベースに接続してデータをブラウザに表示するリンクをクリックすると問題が発生します。HTTPメソッドGETは、このURLではサポートされていません。-java servlets

これは私のJSPコードです:

 <html> 
     <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

     </head> 
     <body> 
     <% 
      String str = (String)request.getAttribute("acId"); 
     %> 
     Account ID: <a href="detailsservlet"> <%= str %> 
     </body> 
     </html> 

これは私のサーブレットのコードです:

 package com.Project.Hdfc; 

     import java.io.IOException; 
     import java.io.PrintWriter; 
     import java.sql.Connection; 
     import java.sql.DriverManager; 
     import java.sql.ResultSet; 
     import java.sql.Statement; 

     import javax.servlet.ServletException; 
     import javax.servlet.http.HttpServlet; 
     import javax.servlet.http.HttpServletRequest; 
     import javax.servlet.http.HttpServletResponse; 


     public class detailsservlet extends HttpServlet { 
@Override 
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 



    res.setContentType("text/html"); 
    PrintWriter pw = res.getWriter(); 
    Connection con; 
    Statement stmt; 
    ResultSet rs; 
    try{ 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     con = DriverManager.getConnection("jdbc:odbc:DSN","scott","krishna"); 
     stmt = con.createStatement(); 
     rs = stmt.executeQuery("Select * from custm"); 
     pw.println("Id "+ " Name" +" Address" + "<br>"); 
     while(rs.next()) 
     { 
     pw.println(rs.getInt(1)+" "+rs.getString(2) + " " + rs.getString(3) + "<br>"); 
     } 
     } 
     catch (Exception e){ 
     pw.println(e); 
     } 
     } 

} 

答えて

1

あなたのsevletコード内のdoPostメソッドではなく、doGetメソッドを持っています。 jspページから情報を取得したいだけで、データベースにデータを投稿しない場合は、doGetだけを使用します。投稿と取得の両方をしたい場合は、一種の解決策は、

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

などの方法です。

また、Javaコードにhtmlタグを混ぜてはいけません。

コードのもう1つの解決策は、href = "detailssevlet"をエレメント内の入力タイプのボタンに変更することです。これは、あなたがしたいことがあれば、GETではなく、サーバーにPOSTを提供するからですこの場合は、データをフェッチしてサーバーに送信しないためです。

+0

でも同じエラーが発生しています。 –

+0

@krishnabhargavi iveが答えを編集しました。この答えの例のように、doGetメソッドを追加するための最も簡単なソリューションを試しましたか? – rapadura

+0

ええ、doPostメソッドを追加しましたが、同じエラーが発生しています –

0

あなたのdoPostメソッドの名前をdoGetとしたいと思います。

+0

私はそれがまだ同じエラーを得るのが好きなら。 –

+0

再コンパイルされたコードをロードするためにサーブレットコンテナを再起動する必要があるかもしれません –

関連する問題