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. oracle linux telnet,linux如何开启telnet服务
  2. Rcysoft PDF Watermark Pro中文版
  3. L4Re Runtime Environment 学习资料
  4. TiKV 在饿了么的大规模应用实践
  5. java搭建tcp客户端_【Java学习笔记】TCP客户端/服务器端
  6. [burp][CTF]burp intruder爆破出现 Payload set 1: Invalid number settings的解决办法
  7. ios开发之--调整UISearchBar的输入框的背景颜色
  8. java反显是什么_卡西欧反显是什么意思
  9. android自定义键盘小数点键,android实现 自定义键盘 keydemo
  10. 一文搞懂如何高效学习与进阶NLP or CV!
  11. 安装GitExtentions KDiff3已配置为合并工具,kdiff3的路径未配置
  12. 一、安装 1、kafka 需要java环境;(百度网盘地址:https://pan.baidu.com/s/1i3YXtiBH9YYvZn9vQy1g8w 提取码:dot8)
  13. 全面解析Linux 内核 3.10.x - Device Tree 详解
  14. poi 启用保护后取消_保护模式禁用怎么解除
  15. 【最新技术早知道】PCIe Gen5 还没用上,Gen6 就来了?PCIe 6.0 系列文章之:《PCIe 6.0,到底 6 在哪?》
  16. 大型多人在线游戏服务器架构设计
  17. 将Openfire中的MUC改造成类似QQ群一样的永久群
  18. cypher语法 | Neo4j cypher增删查改
  19. Appium安装与初步使用
  20. Android Studio中no module问题

热门文章

  1. MySQL笔记7:sum和count用法总结
  2. <X86汇编语言:实模式到保护模式>四十四 协同式任务切换
  3. Linux操作系统下如何利用SSH进行远程控制
  4. Cucumber入门之_World
  5. Syntax error , insert “EnumBody” to complete EnumDeclaration
  6. spring AOP编程
  7. IOS Animation-CAShapeLayer、UIBezierPath与Animation的结合
  8. PHP扩展开发教程,通过实例来展示PHP的扩展开发和底层应用原理(C语言非zephir)...
  9. 管理“我的右上角” : 介绍菜单栏图标软件 Bartender
  10. IIS6+Tomcat7整合