转发或重定向后,获取表单参数的null

时间:2012-05-01 17:19:33

标签: java http jsp servlets

我有一个非常简单的登录servlet,代码如下:

            userName = request.getParameter("username");
    password = request.getParameter("password");

    if ("xxx".equals(userName) && "xxx".equals(password)) {
        RequestDispatcher requestDisSecure = request
                .getRequestDispatcher("VendorList_Secure.jsp");
        requestDisSecure.forward(request, response);
    }
    if ("xxx".equals(userName) && "xxx".equals(password)) {
        RequestDispatcher requestDisSecure = request
                .getRequestDispatcher("VendorList_Secure.jsp");
        requestDisSecure.forward(request, response);
    }
    if ("xxx".equals(userName) && "xxx".equals(password)) {
        RequestDispatcher requestDisSecure = request
                .getRequestDispatcher("VendorList_Secure.jsp");
        requestDisSecure.forward(request, response);
    }
    if ("xxx".equals(userName) && "xxx".equals(password)) {
        RequestDispatcher requestDisSecure = request
                .getRequestDispatcher("VendorList_Secure.jsp");
        requestDisSecure.forward(request, response);
    } else {
        /**
         * Unauthenticated user
         */
        RequestDispatcher requestDisUnSecure = request
                .getRequestDispatcher("VendorLoginError.jsp");
        requestDisUnSecure.forward(request, response);
    }

我们来自VendorLogin.jsp的这个servlet逻辑,它具有用户名& password参数,如果登录正确,则转发到VendorList_Secure.jsp,但如果没有,它将转发到VendorLoginError.jsp,但输入新的用户名&密码并点击上面的servlet,我得到了用户名和密码密码参数为null而不是servlet中的新更新值!

我尝试重定向,但我得到了同样的效果

我知道如何通过保护web.xml中的资源来实现登录更好,但我想知道为什么这个简单的例子不起作用

那我在这里做错了什么?

非常感谢

2 个答案:

答案 0 :(得分:1)

您的表单元素应与getParameter中提供的名称匹配。

userName = request.getParameter("username");
password = request.getParameter("password");

如下所示

<input type="text" name="username"  />
<input type="password" name="password"  />

答案 1 :(得分:0)

您的登录jsp应该包含带有用户名和密码的元素。

<input type="text" name="username" id="txtUserName" />