转发servlet POST请求时出现HTTP错误405

时间:2015-08-05 08:28:13

标签: java sql sql-server-2008 servlets

我是一名Java新手所以请耐心等待。我制作的这个程序与我的密码和数据库用户名相匹配。如果我输入正确的密码,则会弹出

HTTP Status 405 - HTTP method POST is not supported by this URL

--------------------------------------------------------------------------------

type Status report

message HTTP method POST is not supported by this URL

description The specified HTTP method is not allowed for the requested resource (HTTP method POST is not supported by this URL).


--------------------------------------------------------------------------------

Apache Tomcat/6.0.35 

但是当我输入错误的密码时,会出现预期的输出(即导航到www.google.com)。我无法找到错误。 我的代码是:

package httpserv1;

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

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

public class Httpserv extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void init() throws ServletException {    
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        String name = request.getParameter("name1");
        String password = request.getParameter("password1");

        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String userName = "sa";
            String password2 = "iyoginet$123";
            String url = "jdbc:sqlserver://10.1.36.15:8307;databaseName=master";
            Connection con = DriverManager.getConnection(url, userName, password2);
            Statement stmt = (Statement) con.createStatement();
            ResultSet rs = ((java.sql.Statement) stmt)
                    .executeQuery("SELECT PASSWORD FROM LOGON WHERE NAME='" + name + "'");

            while (rs.next()) {
                String pass = rs.getString(1);

                if (password.equalsIgnoreCase(pass)) {
                    RequestDispatcher rd = request.getRequestDispatcher("Serv");
                    rd.forward(request, response);
                } else {
                    response.sendRedirect("http://www.google.co.in");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void destroy() {
        System.out.println("Good Bye ! !");
    }
}

根据我的代码,如果输入错误的密码,它应该被转发到另一个servlet(即serv)。

1 个答案:

答案 0 :(得分:0)

您的问题是您要将完全相同的请求(即POST)转发给另一个Servlet ("Serv")。我假设你的第二个Servlet ("Serv")无法处理POST请求(因为它没有doPost-Method)。您应该使用:

response.sendRedirect("/Serv");

"/Serv"替换为servlet的路径。

相关问题