到目前为止我得到了什么:
这一切都以HTML表单开头,提示用户输入用户名和密码。从那里它将获取的用户/传递发布到servlet,GateKeeper。 GateKeeper确定用户/传递组合是否匹配MySQL数据库中的任何记录。
这是我使用的sql:SELECT id FROM Users WHERE username='?' AND password=MD5('?')
在哪里?表示提供以前HTML表单的信息。
我现在需要的是: 我需要一些方法来存储数据库中记录的用户名和ID。 GateKeeper成功将用户重定向到控制面板。因此,我需要一种方法来引用用户名来显示简单的问候语等,以及id,这样就可以消除对数据库的不必要的调用。控制面板可以对Servlet进行AJAX调用,从而为MySQL数据库执行某种任务。
答案 0 :(得分:2)
只需将登录用户存储在会话中。
User user = userDAO.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
// Display home page.
} else {
// Display login form with error message.
}
然后在JSP EL中由${user}
提供。
<p>Welcome back, <c:out value="${user.fullname}" /></p>
另一个优点是,您只需检查会话中是否存在已登录用户,即可在Filter
的帮助下阻止/允许访问某些页面。
顺便说一下,你的预备语句SQL在语法上是无效的。它应该没有单引号。
SELECT id FROM Users WHERE username=? AND password=MD5(?)