JSP servlet不执行doPost方法

时间:2016-08-29 12:55:23

标签: java jsp servlets

我最近开始用java编程,并且已经尝试了一些JSP开发。我正在尝试创建一个使用POST方法将数据传输到servlet的登录页面。这是我的代码:

<form method="POST" name ="loginForm"  action="userAuth">
            <input type="hidden" name="userAction" value="login">
            Username: <input type="text" name="txtUsername"> <br>
            Password    : <input type="password" name="txtPassword">
            <br><input type="submit"  value="Login">

</form>

以上代码来自初始登录页面。

以下代码来自userAuth.java文件。

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
    String userAction = request.getParameter("userAction");
    if (userAction.equals("Login")) {
    String userName = request.getParameter("txtUsername");
    String passWord = request.getParameter("txtPassword");

    if (userName.equals("hello") && passWord.equals("hello")) {
    response.sendRedirect("Homepage.jsp");
    }
    }
}

我遇到的问题是,当我输入正确的用户名和密码时,不会执行doPost方法,因此不会发生任何重定向。而只执行ProcessRequest方法,只显示初始模板到Web浏览器。

提前谢谢。

P.S我正在使用Apache Tomcat 8.0.27.0

3 个答案:

答案 0 :(得分:2)

我已经解决了这个问题......

问题在于以下一行

<input type="hidden" name="userAction" value="**login**">

以及第二个块中的后续处理:

if (userAction.equals("**Login**")) {}

登录值没有大写的L。

刚改变了这一点。

答案 1 :(得分:0)

processRequest()方法有什么作用?如果按照您的说法执行,则服务器会向客户端发出响应,而剩余的代码块不会执行。你试过没有这个功能吗?

答案 2 :(得分:0)

隐藏流程请求方法。

像这样:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //processRequest(request, response);
    String userAction = request.getParameter("userAction");
    if (userAction.equals("Login")) {
        String userName = request.getParameter("txtUsername");
        String passWord = request.getParameter("txtPassword");
    }
}