java - 用户登录表单提交后为什么servlet里user仍为null?
本文介绍了java - 用户登录表单提交后为什么servlet里user仍为null?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
public class LoginServlet extends HttpServlet {
private BusinessService s = new BusinessServiceImpl();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");//明文
//验证是否成功
User user = s.login(SecurityUtil.base64encode(username), SecurityUtil.md5(password));
//登录失败:提示
if(user==null){
response.getWriter().write("错误的用户名或密码");
return;
}
//登录成功:判断是否记住
HttpSession session = request.getSession();
session.setAttribute("user", user);
//记住:用cookie来存。
String remember = request.getParameter("remember");
if(remember!=null){
Cookie c = new Cookie("loginInfo", SecurityUtil.base64encode(username)+"_"+SecurityUtil.md5(password));
c.setMaxAge(Integer.MAX_VALUE);
c.setPath(request.getContextPath());
response.addCookie(c);
}
//重定向到主页
response.sendRedirect(request.getContextPath());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
<form action="${pageContext.request.contextPath}/servlet/LoginServlet" method="post">
用户名:<input type="text" name="username"/><br/>
密 码:<input type="password" name="password"/><br/>
<input type="checkbox" name="remember"/>记住<br/>
<input type="submit" value="登录"/>
</form>
求大神解答!到底是哪里的错误
解决方案
可以看出传进来的参数是没问题,username
和password
都有值,然后经过login()
后返回null
,说明这方法里面你对用户名和密码的加密,经过编码后传到后台和数据库的用户名密码不一致,继续看发型你数据库密码是123
,而你的密码经过md5
加密后怎么可能还是123
。
所以直接在login()里面的参数去掉base64
和md5
加密:
User user = s.login(username, password);
应该就可以查询出结果了。
这篇关于java - 用户登录表单提交后为什么servlet里user仍为null?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文