在JSP页面中作为null接收的变量值

时间:2015-08-27 23:56:01

标签: java jsp servlets

我制作了一个简单的登录应用。但是每当发送表单时,servlet都会收到空数据。

以下是登录页面

<body>
<form action="login">
    Enter login Name : <input type="text" name="userName"/><br/>
    Enter password   : <input type="password" name="userPassword"/><br/>
    <input type="submit" value="Log In"/>
</form>

以下是用于检查输入的变量值

的servlet代码
@WebServlet("/login")
public class loginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public loginServlet() {
    super();
    // TODO Auto-generated constructor stub
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String name = (String)request.getAttribute("userName");
    String password = (String)request.getAttribute("userPassword");

    System.out.print("in doGet method");
    System.out.print(name+" "+password+" are these");


    if(name!=null && password!=null){
        System.out.print("in null method");
        if(name=="admin" && password=="admin"){
//              Cookie cookie = new Cookie("userName", name);
//              response.addCookie(cookie);
//              RequestDispatcher dispatch = request.getRequestDispatcher("success.jsp");
//              dispatch.forward(request, response);

            response.sendRedirect("success.jsp");
        }
        else{
            System.out.print("in error method");
            response.sendRedirect("error.jsp");
        }
    }
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

}

我正在使用System.out.print方法在Tomcat控制台中打印值。

3 个答案:

答案 0 :(得分:5)

这些来自Request.getAttribute(String)

的来电
String name = (String)request.getAttribute("userName");
String password = (String)request.getAttribute("userPassword");

应调用Request.getParameter(String)(根据Javadoc,将请求参数的值返回为String )。像

String name = request.getParameter("userName");
String password = request.getParameter("userPassword");

此外,

if(name=="admin" && password=="admin"){

应该是

if (name.equals("admin") && password.equals("admin")) {

因为StringObject,您需要等效值(不是相同的引用)。

答案 1 :(得分:0)

而不是request.getAttribute("userName"); use request.getParameters("username");

也为密码做。

答案 2 :(得分:0)

问题是你是通过html表单发送你的数据,你不能根据请求设置属性,而是那些是参数。因此,而不是request.getAttribute()尝试request.getParameter()

使用response.sendRedirect()重定向到下一个视图也是一种很好的做法,但是如果您希望在下一个视图中获取以前的参数(用户名/密码),那么您将在此处丢失它。要获取这些详细信息,您可以使用RequestDispatcher,也可以继续使用response.sendRedirect()并使用会话使用session.setAttribute(<key>, <value>)来处理详细信息。