当前位置: 代码网 > it编程>编程语言>Java > springboot根据sessionId查询session方式

springboot根据sessionId查询session方式

2026年04月10日 Java 我要评论
问题跨域问题,session无法进行同步,可以通过保存session和sessionid的方式进行校验,向前端传送sessionid,前端可以通过头部传sessionid,通过sessionid获取相

问题

跨域问题,session无法进行同步,可以通过保存session和sessionid的方式进行校验,向前端传送sessionid,前端可以通过头部传sessionid,通过sessionid获取相关的信息,进行校验等操作

1、创建一个类用于保存session

对session进行添加,删除,查询

/**
 * 自定义获取指定sessionid的session
 */
public class mysessioncontext {
    private static mysessioncontext instance;
    private hashmap mymap;

    private mysessioncontext() {
        mymap = new hashmap();
    }

    /**
     * 创建mysessioncontext的对象
     * @return
     */
    public static mysessioncontext getinstance() {
        if (instance == null) {
            instance = new mysessioncontext();
        }
        return instance;
    }

    /**
     * 添加session
     * @param session
     */
    public synchronized void addsession(httpsession session) {
        if (session != null) {
            mymap.put(session.getid(), session);
        }
    }

    /**
     * 删除session
     * @param session
     */
    public synchronized void delsession(httpsession session) {
        if (session != null) {
            mymap.remove(session.getid());
        }
    }

    /**
     * 查询session
     * @param session_id
     * @return
     */
    public synchronized httpsession getsession(string session_id) {
        if (session_id == null) {
            return null;
        }
        return (httpsession) mymap.get(session_id);
    }

}

2、建立一个监听器

监听session的创建和销毁

/**
 * 监听器来监控session的创建销毁
 */
@weblistener
public class sessionlistener implements httpsessionlistener {

    private mysessioncontext myc = mysessioncontext.getinstance();

    @override
    public void sessioncreated(httpsessionevent httpsessionevent) {
        myc.addsession(httpsessionevent.getsession());
    }

    @override
    public void sessiondestroyed(httpsessionevent httpsessionevent) {
        httpsession session = httpsessionevent.getsession();
        myc.delsession(session);
    }
}

3、在启动类上添加注解

@servletcomponentscan用于扫描到sessionlistener

@springbootapplication
@servletcomponentscan
public class runmain{
	public static void main(string[] args) {
		springapplication.run(runmain.class, args);
	}	
}

操作代码

 //创建mysessioncontext对象
 mysessioncontext mycontext = mysessioncontext.getinstance();
 //存储session
 mycontext.addsession(session);
 //根据sessionid获取session
 httpsession httpsession = mycontext.getsession(sessionid);
 //删除session
 mycontext.delsession(session);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com