【问题标题】:Getting null for form parameter after being forwarded or redirected转发或重定向后表单参数为空
【发布时间】:2012-05-01 17:19:33
【问题描述】:

我有一个非常简单的登录 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 逻辑,如果登录正确,它会转发到 VendorList_Secure.jsp,但如果不是,它将转发到 VendorLoginError.jsp,但在输入新的用户名和密码并点击上述 servlet,我将用户名和密码参数都设为 null,而不是 servlet 中的新更新值!

我尝试了重定向,但效果相同

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

那么我在这里做错了什么?

非常感谢

【问题讨论】:

    标签: java http jsp servlets


    【解决方案1】:

    您的表单元素应与 getParameter 中给出的名称匹配。

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

    如下图

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

    【讨论】:

    • 有相同的,我第一次使用正确的凭据向 servlet 请求访问 VendorList_Secure.jsp。但是在发送错误的用户名和密码并转发到 VendorLoginError.jsp 后出现问题,我没有得到新的更新值,我得到的只是 null
    • 解决了我忘记把 name 属性放在 VendorLoginError.jsp 中,多么愚蠢的错误 ;)
    • 它有时会发生 coooooooooool
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多