protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String password =  request.getParameter("password");
if(null == name || null == password || name.trim().equals("") || password.equals(""))
{
request.setAttribute("message", "请输入用户名和密码");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}

if(name.equals(password))
{
request.setAttribute("name", name);
request.getRequestDispatcher("/welcome.jsp").forward(request, response);

}else
{
request.setAttribute("message", "请输入正确的用户名和密码");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}刚进新公司,写了个servlet的想练练手,结果报错了以上代码,我理解的是如果进到第一个if后,用request请求转发,代码应该就不会往下走了。。结果是代码还是继续了,最后报错。。不理解了。求解答。

解决方案 »

  1.   


    if(null == name && name.trim().equals("")  )
            {
                request.setAttribute("message", "请输入用户名和密码");
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }
    if(null == password && password.equals("")){}
            
    感觉用户名和密码最好分开写,写到一起逻辑会出现问题
      

  2.   

    name.trim().equals("")  还有,这个去掉空格是为了什么?
      

  3.   

    转发了方法其实并没有结束,如果想结束方法还得在后面加return关键字。
      

  4.   

    1楼的表达式是永远不会成立的!name==null 就不会等于""了,如果等于""就不会是null
      

  5.   

    楼上说的没错,转发之后最后加return; 这是具有良好代码风格。1楼的表达式是成立的。 只要name不等于null 并且 不为""的时候就成立了啊!