博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Grails通过sessionId获取session对象
阅读量:6449 次
发布时间:2019-06-23

本文共 2098 字,大约阅读时间需要 6 分钟。

Grails通过sessionId获取session对象

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

创建监听类 SessionTracker

package com.sessionimport org.springframework.beans.BeansExceptionimport org.springframework.context.ApplicationContextimport org.springframework.context.ApplicationContextAwareimport org.springframework.web.context.WebApplicationContextimport javax.servlet.http.HttpSessionimport javax.servlet.http.HttpSessionEventimport javax.servlet.http.HttpSessionListenerimport java.util.concurrent.ConcurrentHashMapimport java.util.concurrent.ConcurrentMapclass SessionTracker implements HttpSessionListener, ApplicationContextAware {    private static final ConcurrentMap
sessions = new ConcurrentHashMap
(); 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 herebeans = {    // 自定义session监听器    sessionTracker(SessionTracker)}

获取session

package com.geneeimport org.springframework.web.context.request.RequestContextHolderimport javax.servlet.http.HttpSessionclass HiController {    // 注入监听对象    def sessionTracker    def index() {        // 获取session        def 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    }}

转载地址:http://hmlwo.baihongyu.com/

你可能感兴趣的文章
多线程编程之Windows环境下创建新线程
查看>>
ASP.Net MVC的开发模式
查看>>
groupbox 下的datagridview的列标题字体修改混乱
查看>>
HDU-3092 Least common multiple---数论+分组背包
查看>>
CentOS 7使用systemctl如何补全服务名称
查看>>
Unity3D NGUI 给button按钮添加单间事件
查看>>
C# 使用各种API
查看>>
密码的校验.大小写字母,数字,特殊字符中的至少3种
查看>>
ios 不同sdk4.3 6.0版本号,关于方法的兼容性的通用方法
查看>>
Shell编程学习总结
查看>>
070、如何定制Calico 网络policy(2019-04-15 周一)
查看>>
构建之法阅读笔记02
查看>>
Webstorm常用快捷键备忘
查看>>
js滚动加载到底部
查看>>
关于mac远程链接window服务器以及实现共享文件
查看>>
Redis慢查询,redis-cli,redis-benchmark,info
查看>>
Virtualbox 虚拟机网络不通
查看>>
java概念基础笔记整理
查看>>
self parent $this关键字分析--PHP
查看>>
CC_UNUSED_PARAM 宏含义的解释
查看>>