Grails通过sessionId获取session对象

思路:自定义一个类用来监听session,所有session存入map中,sessionId作为读取的key

创建监听类 SessionTracker

package com.sessionimport org.springframework.beans.BeansException
import org.springframework.context.ApplicationContext
import org.springframework.context.ApplicationContextAware
import org.springframework.web.context.WebApplicationContextimport javax.servlet.http.HttpSession
import javax.servlet.http.HttpSessionEvent
import javax.servlet.http.HttpSessionListener
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentMapclass SessionTracker implements HttpSessionListener, ApplicationContextAware {private static final ConcurrentMap<String, HttpSession> sessions = new ConcurrentHashMap<String, HttpSession>();void setApplicationContext(ApplicationContext applicationContext) throws BeansException {def servletContext = ((WebApplicationContext) applicationContext).getServletContext()servletContext.addListener(this);}void sessionCreated(HttpSessionEvent httpSessionEvent) {sessions.putAt(httpSessionEvent.session.id, httpSessionEvent.session)}void sessionDestroyed(HttpSessionEvent httpSessionEvent) {sessions.remove(httpSessionEvent.session.id)}HttpSession getSessionById(id) {sessions.get(id)}
}

grails-app/conf/resources.groovy 中注册

import com.session.SessionTracker// Place your Spring DSL code here
beans = {// 自定义session监听器sessionTracker(SessionTracker)
}

获取session

package com.geneeimport org.springframework.web.context.request.RequestContextHolderimport javax.servlet.http.HttpSessionclass HiController {// 注入监听对象def sessionTrackerdef index() {// 获取sessiondef sessionId = RequestContextHolder.currentRequestAttributes().getSessionId()println "原sessionId:$sessionId"// 根据sessionId获取session对象HttpSession httpSession = sessionTracker.getSessionById(sessionId).getId()println "获取到session后:"+httpSession.getId()// 使session立即失效sessionTracker.getSessionById(sessionId).invalidate()render sessionId}
}

Grails通过sessionId获取session对象相关推荐

  1. 根据sessionId获取Session对象

    Servlet2.1之后不支持SessionContext里面getSession(String id)方法. 但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一 ...

  2. java根据sessionid获取session

    java根据sessionid获取session import java.util.HashMap; import java.util.Map;import javax.servlet.http.Ht ...

  3. 通过sessionid获取session php,php如何返回sessionID和如何通过sessionID获取相关的session...

    php如何返回sessionID和如何通过sessionID获取数据 回复内容: php如何返回sessionID和如何通过sessionID获取数据 说下 session 的基本知识 session ...

  4. Java通过sessionid获取session

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

  5. java springboot根据sessionId获取session(根据sessionId无法获取session)

    java已经不支持通过sessionId直接获取session 所以只能自己建立session监听类来存储和取session 监听类 import javax.servlet.annotation.W ...

  6. 如何根据sessionID获取session解决方案

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...

  7. 如何根据sessionID获取session

    根据sessionID有一个比较简单的方法,使用session上下文即可 HttpSession sess = session.getSessionContext().getSession(sid) ...

  8. java 获取 sessionid_通过sessionid获取session方法

    使用HttpSessionListener来监听session的创建和销毁,首先创建HttpSessionListener的实现类 SessionListeners.java packagecom.t ...

  9. SpringCloud微服务架构分布式组件如何共享session对象

    参考文章: https://www.cnblogs.com/fengli9998/p/7881331.html https://blog.csdn.net/dsen726/article/detail ...

最新文章

  1. Focal Loss升级:让Focal Loss动态化,类别极端不平衡也可以轻松解决
  2. Python Generators(生成器)——yield关键字
  3. C~K的班级_JAVA
  4. C++/CLI思辨录之传递托管堆地址
  5. 7-20上午刷题未知点集合
  6. 翻动100万级的数据
  7. mysql输出代码_mysql常用代码
  8. Windows平台下kafka环境的搭建
  9. r语言electricity数据集_R语言实战学习
  10. nodejs 批处理执行 app.js
  11. 为了战略发展,Adobe推出自己浏览器?
  12. Mac 自定义用户级别Applications, 安装应用到Dashboard
  13. FrameLayout AbsoluteLayout GridLayout用法及实例
  14. 阿里图标css的使用中的使用方法,iconfont阿里巴巴矢量图标库的正确使用方法
  15. 信息安全常见名词解释
  16. 人脸识别“火”了!网友:胖了、整容了怎么办?
  17. 【历史上的今天】6 月 26 日:EDSAC 计算机之父诞生;B 站成立;Skype 创始人出生
  18. 年度收官技术盛宴SD2.0大会精彩议题曝光
  19. 小波学习笔记——MATLAB
  20. LCD1602 + TLC2543

热门文章

  1. mutable关键字
  2. 微软官方在线免费PPT、简历、Excel报表模板,图片素材
  3. WPF 全球化和本地化(图解)
  4. 《Total Commander:万能文件管理器》——第2.3节.下载与安装
  5. vCenter功能基本介绍
  6. php -- 检查是否存在
  7. mysqld命令查看数据库目录
  8. /usr/bin/install: cannot create regular file ‘/usr/local/lib/libpcre.so.1.2.13‘: Permission denied
  9. C++ 拷贝构造函数应用场景
  10. google nexus5x 刷机抓包逆向环境配置(一)