3

我有一个登录页面,要求输入用户名和密码。单击登录按钮时,网页将用户名和密码作为参数发送到登录 servlet(我使用的是 tomcat)。然后,我正在使用创建一个会话request.getSession();

我有一个 sessionListener 类(实现HttpSessionListener),我在其中覆盖 sessionCreated()sessionDestroyed()方法。我还在 web.xml 文件中创建了监听器条目。

我的问题是,我想访问 sessionCreated()方法内部的用户名请求参数,以便在创建新会话时将用户名写入 mysql 数据库。

基本上,有什么方法可以访问用户在会话监听器中输入的参数?请建议我怎样才能做到这一点。

4

2 回答 2

2

在您的 Servlet 中,将用户名和密码(从 获取HttpServletRequest)设置为HttpSession

session.setAttribute("username", uname);
session.setAttribute("password", passwd);

并在你HttpSessionListener得到它使用

String uname = (String) session.getAttribute("username");
String pwd  = (String) session.getAttribute("password");
于 2013-04-28T14:06:20.503 回答
1

感谢@sanbath 帮助我。这是我完成这项工作所遵循的方法。

我已经在 servlet 本身中添加了代码,以将登录的用户名插入数据库,因为我无法在sessionCreated()方法内部执行此操作(此时没有可用的会话属性)。

为了在会话失效时删除用户名,我只是从方法的HttpSessionEvent参数中获取会话属性详细信息sessionDestroyed()。由于用户名属性可用,我可以将其从数据库中已登录的用户表中删除。

public void sessionDestroyed(HttpSessionEvent e) {
    System.out.println("session destroyed");
    System.out.println("username is "+e.getSession().getAttribute("user"));
}
于 2013-04-29T05:53:37.127 回答