请JAVA/JSP高手看段代码

来源:百度知道 编辑:UC知道 时间:2024/05/21 18:38:59
我的完整资料,请大哥帮我看一下错误,目的是为了处理重复登陆,如果重复,就把以前的用户踢掉,创建新用户,目前问题主要是,无法创建新用户:
servlet中的代码:
String uname = request.getParameter("uname");
HttpSession session = request.getSession(false);
session.setAttribute("name", uname);
SessionListener.adduser("name", session);
response.sendRedirect("index.jsp");
类中的代码:
package com.bag.project.SessionListener;

import java.util.*;

import javax.servlet.http.*;

public class SessionListener implements HttpSessionAttributeListener {

private static HashMap hashuser = new HashMap();

public SessionListener() {
}

public void attributeAdded(HttpSessionBindingEvent arg0) {
if (arg0.getName().equals("name")) {
adduser(arg0.getValue(), (HttpSession) arg0);
}
}

public void attributeRemoved(HttpSessionBindingEvent arg0) {
if (arg0.getName().equals("name&q

建议使用filter来实现,这样比较方便

也就是在filter中存储用户名和sessionid,用户登录一次,只会有一个sessionid,如果出现了新的sessionid,就将filter中存储的其它的sessionid给替掉。同时结束相应的session.

也就是实现了一个session在filter中的存储。
对于大量的用户,适合用LDAP来存储实现。内存中只适合存储少量的数据。

参考:
利用filter对session在创建、失效时的处理

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class sessionLTest implements HttpSessionListener {

private int count = 10;
private ServletContext context = null;

public synchronized void sessionCreated(HttpSessionEvent se) {
// TODO Auto-generated method stub
count++;
log("sessionCreated(´" + se.getSession().getId() + "´LuoTing´s Log)"
+ " count=" + count);
se.getSession().setAttribute("count