Fork me on GitHub

spring中会话管理

需求:要求当一个操作者打开x用户信息录入页面时禁止其他的操作者打开x用户的信息录入页面
实现:采用将application域来保存每个请求会话,当一个操作者请求打开x用户信息录入时去保存在application域中的list中取值判断当前请求的用户x的信息录入页面是否已经被打开,打开则提示已经被打开否则打开页面。
其中实现了会话监听器,会话监听器有两个函数,一个会话创建时调用一个会话撤销时调用。当被添加进list的会 失效时就通过会话撤销函数去移除失效会话。
实现会话监听器HttpSessionListener

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.ArrayList;

/**
 * Created by gongxin on 2017/7/3.
 */
public class SessionListener implements HttpSessionListener{
   Logger logger= LogManager.getLogger(SessionListener.class);
    private ServletContext servletContext;
    ArrayList<HttpSession> list;
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
         logger.info("监听到会话创建");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        servletContext= httpSessionEvent.getSession().getServletContext();
        list= (ArrayList<HttpSession>) servletContext.getAttribute("sessionList");
        if(list.contains(httpSessionEvent.getSession()))
           list.remove(httpSessionEvent.getSession());
        servletContext.setAttribute("sessionList",list);
        logger.info("监听到会话失效");
    }
}


最新评论

    还没有人评论...

当当

友情链接

Powered by Python. Copyright © 2017.

鄂ICP备17010875号. All rights reserved.