精华内容
下载资源
问答
  • 如何根据sessionID获取session解决方案

    万次阅读 多人点赞 2018-07-18 15:17:40
    最近在做一个项目的时候,本来是想通过session来存一些数据的,但是,发现当两次访问的方法不同时,后台的session是不一样的,也就是说sessionId,不一致,所以导致的问题就是:当我需要从session取值的时候,总是...

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾讯等大厂offer。
    另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

    一、写在前面

    最近在做一个项目的时候,本来是想通过session来存一些数据的,但是,发现当两次访问的方法不同时,后台的session是不一样的,也就是说sessionId,不一致,所以导致的问题就是:当我需要从session取值的时候,总是出现取不到值的情况,后面也想过用redis,但是也被坑了。

    后来,想到就是通过和前端沟通,通过sessionId和前端进行交互,来保证每一次的session是一致的,所以就想到了下面的方法。

    二、以前解决方法

    根据sessionID有一个比较简单的方法,使用session上下文即可

    HttpSession sess = session.getSessionContext().getSession(sid)  
    

    不过很可惜,java之后处于安全性考虑,不建议使用这个方法,虽然我不知道为什么对安全性会有影响,但是既然java不建议用了。下面来分享一个方法,使用session监听器配合一个静态的hashmap即可实现。

    三、新的解决方法

    首先,创建自己的sessionContext

     public class MySessionContext {  
            private static MySessionContext instance;  
            private HashMap<String,HttpSession> sessionMap;  
          
            private MySessionContext() {  
                sessionMap = new HashMap<String,HttpSession>();  
            }  
          
            public static MySessionContext getInstance() {  
                if (instance == null) {  
                    instance = new MySessionContext();  
                }  
                return instance;  
            }  
          
            public synchronized void addSession(HttpSession session) {  
                if (session != null) {  
                    sessionMap.put(session.getId(), session);  
                }  
            }  
          
            public synchronized void delSession(HttpSession session) {  
                if (session != null) {  
                    sessionMap.remove(session.getId());  
                }  
            }  
          
            public synchronized HttpSession getSession(String sessionID) {  
                if (sessionID == null) {  
                    return null;  
                }  
                return sessionMap.get(sessionID);  
            }  
          
        }  
    

    然后建立session监听,要实现HttpSessionListener接口

      public class SessionListener implements HttpSessionListener {  
              
            private MySessionContext myc = MySessionContext.getInstance();  
              
            public void sessionCreated(HttpSessionEvent httpSessionEvent) {  
                HttpSession session = httpSessionEvent.getSession();  
                myc.addSession(session);  
            }  
          
            public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {  
                HttpSession session = httpSessionEvent.getSession();  
                myc.delSession(session);  
            }  
          
        }  
    

    接着,在web.xml中配置session监听器

       <listener>  
            <listener-class>com.chinapost.manager.utils.SessionListener</listener-class>  
        </listener>  
    

    注意:这个SessionListener是监听器的路径

    完事,大功告成,之后在代码中直接获取就OK了

        MySessionContext myc= MySessionContext.getInstance();  
        HttpSession sess = myc.getSession(sessionId);  
    

    好了,这样就完美的解决了问题了

    最后,再分享我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,已经拿到了大厂offer,整理成了一本电子书,拿去不谢,目录如下:

    现在免费分享大家,在下面我的公众号 程序员的技术圈子 回复 面试 即可获取。

    有收获?希望老铁们来个三连击,给更多的人看到这篇文章

    1、老铁们,关注我的原创微信公众号「程序员的技术圈子」,专注于Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。

    2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。

    3、另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

    点赞是对我最大的鼓励
    ↓↓↓↓↓↓

    展开全文
  • sessionid机制

    千次阅读 2018-03-08 08:44:46
    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)...

    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid


    所以每次不同浏览器跟服务器访问所产生的session会话都是不同的,因为设置session的值也不会互相影响覆盖,但是当在同一浏览器打开不同窗口设置相同session的key时就会互相覆盖影响.

    展开全文
  • Java通过sessionid获取session

    万次阅读 2019-01-11 18:41:21
    2,将sessionid与session通过键值对的形式进行存储(静态全局变量)。 3,需要使用的时候将session进行取出 代码: HttpSession session = request.getSession(); //获取sessionid String sessionId = session....

    1,首先生成session,并获取其id。
    2,将sessionid与session通过键值对的形式进行存储(静态全局变量)。
    3,需要使用的时候将session进行取出
    代码:

          HttpSession session = request.getSession();
    	  //获取sessionid
    	 String sessionId = session.getId();
    	 sHashMap.put(sessionId, session);
             /** 
    		 * 文件删除
    		 * 
    		 * */
            List<String> sidList = new ArrayList<String>();
            sidList.addAll(sHashMap.keySet());
    		for (int i = 0; i < sHashMap.size(); i++) {
    			HttpSession delsession = sHashMap.get(sidList.get(i));
    			long setime = System.currentTimeMillis() - delsession.getLastAccessedTime();
    			if(setime >= 1200000){
    				//最后操作session时间超过20分钟
    				delFolder(request.getSession().getServletContext()
    						.getRealPath("/DataAnalysis/"+delsession.getId()+"DataAnalysis/"));
    			}
    		}
    
    展开全文
  • invalid session id

    千次阅读 2019-06-19 16:02:15
    当请求打开下一级页面,提示 invalid session id 无效的 session id, 原因: 当上一级的数据取完之后,如果保存的是element对象,则当前窗口是不能关闭的,一旦关闭,则无法进一步解析, 如果已将对象中的文本...

    selenium调用webdriver显示浏览器,打开多重页面,从上一级页面中获取到下一级的地址

    当请求打开下一级页面,提示 invalid session id

    无效的 session id,

    原因:

    当上一级的数据取完之后,如果保存的是element对象,则当前窗口是不能关闭的,一旦关闭,则无法进一步解析,

    如果已将对象中的文本提取保存则可正常关闭使用

    另外,如果希望程序多次调用打开不同的页面,请勿关闭上一级的页面,即使数据已经抽取完毕

    也不要执行 close()

    一个脚本的运行过程中貌似只能打开一个webdriver浏览器,可以不断的请求多个地址,一旦关闭之后不能打开新的

    展开全文
  • postman中添加sessionID

    千次阅读 2019-09-03 17:07:31
    在使用postman进行接口测试时遇到一个问题,当前的操作需要有用户登录,于是在postman请求中需要sessionID 解决步骤有两步:找到sessionID、将sessionID添加到请求中。 1、找到sessionID 火狐浏览器中登录系统,按...
  • shiro+springboot自定义sessionId

    千次阅读 2019-07-03 09:12:57
    在shiro中,默认返回的sessionId是uuid或者是random随机的,我们可能需要根据我们的需求进行重写,需要重写sessionId我们只需要写一个类实现SessionIdGenerator中的generateId就行 1.自定义sessionId生成 自定义...
  • JSESSIONID和sessionid的区别

    万次阅读 2018-05-06 18:13:30
    要保持登陆状态,但是sessionid 和 JSESSIONID的值不一致,情况一:部署到测试机上,利用本机登陆网页,sessionid和jsessionid不一样。...Jsessionid只是tomcat的对sessionid的叫法,其实就是sessio...
  • sessionId的作用

    千次阅读 2018-01-15 10:57:16
    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)...
  • SessionID的本质

    千次阅读 2017-02-06 11:22:47
    客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了对应的 sessionID,说明我们处于登录状态,有相应的权限;如果没有...
  • sessionID一直变化。

    万次阅读 2017-10-16 15:41:53
    sessionID一直变化。
  • spring-session实现分布式session共享及自定义sessionid
  • 创建一个唯一的 session ID

    千次阅读 2020-10-23 09:29:44
    在网站开发的时候,常常需要生成一个唯一的的会话(sessionid,这个会话 id 存储在 cookie 中或者在其它安全的地方。: create a unique session id input - string to use as part of the data used to create ...
  • sessionId的生成过程和过期时间

    万次阅读 2017-08-22 16:25:18
    浏览器第一次请求服务器时,服务器会生成一个sessionId,并返回给浏览器,这个sessionId会被保存在浏览器的会话cookie中。如下图 在浏览器不关闭的情况下,之后的每次请求请求头都会携带这个sessionId到服务器。...
  • sessionid不一致问题

    千次阅读 2018-02-11 10:39:25
    问题是这样的,调用后端的登录接口,而且是跨域访问,在添加购物车的时候登录接口的sessionid与之前在登录页面调用接口的sessionid不一样,所以总是提示没有登录,后来在网上找了很多资料都没有解决这个问题。...
  • Java通过sessionId获取Session

    千次阅读 2016-08-09 16:33:06
    Java通过sessionId获取Session
  • 根据sessionID来删除session

    千次阅读 2019-07-22 14:18:31
    在有些情况下可能需要根据sessionId来增删改session,这时候我们可以通过监听来实现。代码如下。 1、创建监听MySessionListener.java public class MySessionListener { public void sessionCreated...
  • Java根据sessionId获取Session对象

    千次阅读 2016-03-14 11:05:12
    Java根据sessionId获取Session对象
  • 就是每次请求在后台拦截器里获取sessionId的时候拿到的id都是不同的, 或者是拿不到ID (只有前端跟后台同一地址才能拿到) 导致一些验证失败。 Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来...
  • 那么如果用户b登录,那么按道理会从cookie中取出之前的那个sessionid,然后传给服务器,然后服务器端会识别这个sessionid,取出对应session的信息,那这样岂不是会造成:a用户存储在session中的信息,会被b用户看到...
  • 常见字段_sessionID会话标识

    千次阅读 2016-10-27 15:51:39
    sessionID会话标识有2类,一个是针对终端session ID,也叫setSessionID,一个是针对服务器的sessionID,也叫slpSessionID setSessionID包含2个参数sessionID和setID slpSessionID抱哈2个参数sessionID和slpID LOG...
  • Sessionid和Token的区别

    万次阅读 2018-07-24 22:45:59
    Session和Token的区别 在理解Session和Cookies的区别后:传送门 1、session出现的原因 ... ...2、session的生成方式 ...浏览器在第一次访问服务器时,服务器会创建一个session,然后同时为该session...然后将sessionid和...
  • 如何根据sessionID获取session

    千次阅读 2015-04-18 13:25:19
    根据sessionID有一个比较简单的方法,使用session上下文即可 HttpSession sess = session.getSessionContext().getSession(sid) 不过很可惜,java之后处于安全性考虑,不建议使用这个方法,虽然我不知道为什么对...
  • sessionid如何产生?由谁产生?保存在哪里?

    万次阅读 多人点赞 2018-03-02 10:56:58
    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。 session在访问tomcat服务器HttpServletRequest的getSession...
  • 保存session id的几种方式

    千次阅读 2017-05-07 20:13:42
    保存session id的几种方式:  A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。 Servlet 容器将 Session ID 作为 Cookie 保存在客户的浏览器中。每次...
  • 如何理解SessionId

    千次阅读 2018-04-17 19:09:13
    如何理解SessionId? 原创 2017年06月14日 18:48:06 标签:Session /cookie ...
  • java根据sessionId创建、删除session

    万次阅读 2017-07-21 14:15:56
    在有些情况下可能需要根据sessionId来增删改session,这时候我们可以通过监听来实现。代码如下。 1、创建监听MySessionListener.java public class MySessionListener { public void sessionCreated...
  • 摘自 : ...背景:  Springboot 2.0 (spring-session-data-redis + spring-boot-starter-web) 需求: 通过cookies中取到的 sessionid 获取到 session 预期效果: @Autowired private SessionRep...
  • 网上能找到很多帖子说怎么实现redis来共享session,照着做完,发现两个独立应用配置到同一个redis后,获取的session id不一样。 怎么回事,他们写的不是很简单,怎么我这每次都不一样呢。 找了半天,原来spring...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 770,571
精华内容 308,228
关键字:

sessionid