Grails通过sessionId获取session对象
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对象相关推荐
- 根据sessionId获取Session对象
Servlet2.1之后不支持SessionContext里面getSession(String id)方法. 但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一 ...
- java根据sessionid获取session
java根据sessionid获取session import java.util.HashMap; import java.util.Map;import javax.servlet.http.Ht ...
- 通过sessionid获取session php,php如何返回sessionID和如何通过sessionID获取相关的session...
php如何返回sessionID和如何通过sessionID获取数据 回复内容: php如何返回sessionID和如何通过sessionID获取数据 说下 session 的基本知识 session ...
- Java通过sessionid获取session
1,首先生成session,并获取其id. 2,将sessionid与session通过键值对的形式进行存储(静态全局变量). 3,需要使用的时候将session进行取出 代码: HttpSessio ...
- java springboot根据sessionId获取session(根据sessionId无法获取session)
java已经不支持通过sessionId直接获取session 所以只能自己建立session监听类来存储和取session 监听类 import javax.servlet.annotation.W ...
- 如何根据sessionID获取session解决方案
点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...
- 如何根据sessionID获取session
根据sessionID有一个比较简单的方法,使用session上下文即可 HttpSession sess = session.getSessionContext().getSession(sid) ...
- java 获取 sessionid_通过sessionid获取session方法
使用HttpSessionListener来监听session的创建和销毁,首先创建HttpSessionListener的实现类 SessionListeners.java packagecom.t ...
- SpringCloud微服务架构分布式组件如何共享session对象
参考文章: https://www.cnblogs.com/fengli9998/p/7881331.html https://blog.csdn.net/dsen726/article/detail ...
最新文章
- Focal Loss升级:让Focal Loss动态化,类别极端不平衡也可以轻松解决
- Python Generators(生成器)——yield关键字
- C~K的班级_JAVA
- C++/CLI思辨录之传递托管堆地址
- 7-20上午刷题未知点集合
- 翻动100万级的数据
- mysql输出代码_mysql常用代码
- Windows平台下kafka环境的搭建
- r语言electricity数据集_R语言实战学习
- nodejs 批处理执行 app.js
- 为了战略发展,Adobe推出自己浏览器?
- Mac 自定义用户级别Applications, 安装应用到Dashboard
- FrameLayout AbsoluteLayout GridLayout用法及实例
- 阿里图标css的使用中的使用方法,iconfont阿里巴巴矢量图标库的正确使用方法
- 信息安全常见名词解释
- 人脸识别“火”了!网友:胖了、整容了怎么办?
- 【历史上的今天】6 月 26 日:EDSAC 计算机之父诞生;B 站成立;Skype 创始人出生
- 年度收官技术盛宴SD2.0大会精彩议题曝光
- 小波学习笔记——MATLAB
- LCD1602 + TLC2543
热门文章
- mutable关键字
- 微软官方在线免费PPT、简历、Excel报表模板,图片素材
- WPF 全球化和本地化(图解)
- 《Total Commander:万能文件管理器》——第2.3节.下载与安装
- vCenter功能基本介绍
- php -- 检查是否存在
- mysqld命令查看数据库目录
- /usr/bin/install: cannot create regular file ‘/usr/local/lib/libpcre.so.1.2.13‘: Permission denied
- C++ 拷贝构造函数应用场景
- google nexus5x 刷机抓包逆向环境配置(一)