我做了一个简单的聊天程序,当一个用户登录成功后,我便把这个用户添加到application中,从而可在用户列表当中显示所有的登录用户。但是当一个用户离开了,我如何把application中保存的用户信息去掉呢?这段代码写在哪里呢?
后来我想到了使用javascript中body的onunload事件(当用户关闭浏览器就触发),在这个事件里我想执行<%%>里的脚本删掉application中的当前用户。但是不行,这个脚本在页面初始化当中就已经被执行了。我该怎么办?我是一个初学者,请大家多多帮忙。下面附上吧用户列表存入application中的代码:
<%
String userName = request.getParameter("userName");
String password = request.getParameter("password");
String param = request.getParameter("param");//获取param参数,用以判断用户操作是注册还是登录 UserDao userDao = new UserDao();
//判断用户输入信息是否为空
if (param == null || userName == null || password == null) {
response.sendRedirect("register.jsp");
} else if (param != null && "login".equals(param)) {  //登录操作
//根据用户名和密码查询数据库
Users user = userDao.findUsers(userName, password);
if (user != null) { //判断当前用户是否存在
//如果用户存在,把当前用户名保存到application中的List集合内
List userList = (List) application.getAttribute("users");
if (userList == null || userList.size() == 0) {  //针对第一个登录用户的操作
userList = new ArrayList();
userList.add(userName);
} else {   //针对其他用户的操作
boolean bool = true;
for (int i = 0; i < userList.size(); i++) {

if (userName.equals(userList.get(i).toString())) {
bool = false;
break;
}
}
if (bool)
userList.add(userName);
}
//把当前用户的信息保存到session中
session.setAttribute("user", user);
application.setAttribute("users", userList);
response.sendRedirect("main.jsp");
} else{   //如果用户不存在,给出提示后,返回到网站首页
//response.sendRedirect("register.jsp");
out
.print("<script type='text/javascript'>alert('用户名或密码错误,请重新登录。');location.replace('index.jsp');</script>");
}
} else {  //注册操作
int count = userDao.insertUser(userName, password,0);
if (count > 0) {
out
.print("<script type='text/javascript'>alert('注册成功,请登录。');location.replace('index.jsp');</script>");
} else {
out
.print("<script type='text/javascript'>alert('注册失败,请重新注册。');history.go(-1);</script>");
}
}
%>