繁体   English   中英

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

[英]HTTP error 405 when forwarding servlet POST request

我是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)。

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

response.sendRedirect("/Serv");

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM