我有一个登录页面,要求输入用户名和密码。点击登录按钮,网页将用户名和密码作为参数发送到登录servlet(我正在使用tomcat)。然后,我正在使用request.getSession();
我有一个sessionListener类(实现HttpSessionListener
),其中我正在覆盖sessionCreated()
和sessionDestroyed()
方法。我还在web.xml文件中创建了监听器条目。
我的问题是,我想访问sessionCreated()
方法中的用户名请求参数,这样我就可以在创建新会话时将用户名写入mysql数据库。
基本上,有没有什么办法可以在会话监听器中访问用户输入的参数?请建议我如何实现这一目标。
答案 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"));
}