如何在sessionCreated方法中检索用户输入的数据

时间:2013-04-28 13:59:26

标签: java jsp tomcat servlets

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

创建会话

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

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

基本上,有没有什么办法可以在会话监听器中访问用户输入的参数?请建议我如何实现这一目标。

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

感谢@sanbath帮助我。这是我完成这个步骤的方法。

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

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

public void sessionDestroyed(HttpSessionEvent e) {
    System.out.println("session destroyed");
    System.out.println("username is "+e.getSession().getAttribute("user"));
}