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

本文共 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://wtvwa.baihongyu.com/

你可能感兴趣的文章
android.view.WindowManager$BadTokenException: Unable to add window
查看>>
HDU5012:Dice(bfs模板)
查看>>
iphone openssh
查看>>
Linux下MEncoder的编译
查看>>
spark高级排序彻底解秘
查看>>
ylbtech-LanguageSamples-PartialTypes(部分类型)
查看>>
福建省促进大数据发展:变分散式管理为统筹集中式管理
查看>>
开发环境、生产环境、测试环境的基本理解和区别
查看>>
tomcat多应用之间如何共享jar
查看>>
Flex前后台交互,service层调用后台服务的简单封装
查看>>
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Linux 获取文件夹下的所有文件
查看>>