此URL -java servlet不支持HTTP方法GET

时间:2012-03-13 16:32:33

标签: jsp 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);
        }
        }

}

2 个答案:

答案 0 :(得分:1)

你的sevlet代码中有一个doPost方法但没有doGet方法。如果您只想从jsp页面获取信息,而不是将任何数据发布到数据库,那么只使用doGet。如果你想发布和获取,一种解决方案是

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

或者反过来,因为那更好。

此外,您不应在Java代码中混合使用html标记。

您的代码的另一个解决方案是将a href =“detailssevlet”更改为元素内的输入类型按钮,因为这将为服务器提供POST,而不是GET,如果这就是您想要做的事情,但不是在这种情况下,因为您获取数据,而不是将其提交给服务器。

答案 1 :(得分:0)

我相信您希望将doPost方法命名为doGet