表单与地址刷新的小问题

表单与地址刷新的小问题

在做小项目时我利用过滤器处理登陆的错误,发现一个小问题,使用按钮来提交表单会发现一个情况。

HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String username = request.getParameter(“username”); // 使用"".equals(username) 为true

String password = request.getParameter(“password”); // 使用"".equals(password) 为false

过滤器代码:

if ("".equals(username) && "".equals(password)) {
    request.setAttribute("errorMsg", "用户名和密码不能为空!");
    request.setAttribute("count", "1");
    request.getRequestDispatcher("index.jsp").forward(request, response);
    return;
} else if ("".equals(username)) {
    request.setAttribute("errorMsg", "用户名不能为空!");
    request.setAttribute("count", "2");
    request.getRequestDispatcher("index.jsp").forward(request, response);
    return;
} else if ("".equals(password)) {
    request.setAttribute("username", username);
    request.setAttribute("errorMsg", "密码不能为空!");
    request.setAttribute("count", "3");
    request.getRequestDispatcher("index.jsp").forward(request, response);
    return;
} else {
    filterChain.doFilter(request, response);
}

当我使用表单进行提交时,"".equals(username) && “”.equals(password) 它们的结果是为true的,我这个完全可以过滤掉错误的输出,只有用户名和密码都输入了值才能进入Servlet进行登录验证。
Srvlet代码:

   String username = request.getParameter("username");
    String password = request.getParameter("password");
    User userUP = new User(username,password);
    HttpSession session = request.getSession();
    IUserDao userdao = new UserDaoImpl();
    if (userdao.isExt(userUP) && password !=null) {
        request.setAttribute("errorMsg", "用户名或密码错误!!!");
        request.setAttribute("num", "4");
        //上述条件都不满足,usename和password在数据库内是存在的
    } else if(!userdao.isExt(userUP) && password !=null){
        User user = userdao.loginUser(userUP);      //user==null,则表示至少有一项为空
        String realname = user.getRealname();
        session.setAttribute("num", "5");
        session.setAttribute("realname", realname);
        session.setAttribute("username", userUP.getUsername());
        session.setAttribute("password", userUP.getPassword());
    }
    request.getRequestDispatcher("index.jsp").forward(request, response);
}

在Servlet中,我写的判断语句是没有问题的,在对登录Servlet进行地址刷新后,页面直接显示“用户名或密码错误!!!”,输入正确的用户名和密码也不能解决问题,之前我以为对地址的刷新就是发出用户名和密码的空值,就算刷新一次,,由于过滤器时过滤LoginServlet的,输出的错误信息,也应该为"用户名和密码不能为空!",所以问题不在于过滤器,经过排查之后,接收不到表单数据但使用 “”.equals(username)为false,而username==null为true,于是瞬间明白问题的原因,使用表单提交获得的并不是null,成功解决问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值