2012-03-13 89 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> 

這是我的servlet代碼:

 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標籤。

你的代碼的另一種解決方案是將你的一個href =「detailssevlet」改爲一個元素內的輸入類型按鈕,因爲這將提供一個POST到服務器,而不是GET,如果這就是你想要做的,但不是在這種情況下,因爲您獲取數據,而不是將其提交給服務器。

+0

仍然收到相同的錯誤。 – 2012-03-13 16:41:30

+0

@krishnabhargavi現在編輯答案。從現在開始,您是否嘗試過使用最簡單的解決方案來添加doGet方法,如示例中的答案? – rapadura 2012-03-13 16:43:06

+0

是啊我添加了doPost方法仍然我得到相同的錯誤 – 2012-03-13 16:45:21

0

我相信你希望你的doPost方法被改名爲doGet

+0

如果我這樣做仍然會得到相同的錯誤。 – 2012-03-13 16:42:47

+0

您可能不得不重新啓動servlet容器以使其加載重新編譯的代碼 – 2012-03-13 16:53:04

相關問題