博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Grails通过sessionId获取session对象
阅读量:5983 次
发布时间: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://porox.baihongyu.com/

你可能感兴趣的文章
Es6
查看>>
2013历程
查看>>
Queue
查看>>
用 Flask 来写个轻博客 (15) — M(V)C_实现博文页面评论表单
查看>>
wampserver 运行橙色,80端口没有被占用,查看错误日志方法
查看>>
Adwords Campaign network & placement
查看>>
java查询图片显示无图片显示项目默认图片
查看>>
page1201未完成
查看>>
oracle数据库命令-持续更新
查看>>
自动脚本工具新版 v2.0
查看>>
AC 自动机
查看>>
float,double和decimal类型
查看>>
使用MapReduce实现一些经典的案例
查看>>
5 . 4 . 3 架构
查看>>
类静态和实例化执行顺序优先级(静态构造函数、静态变量、静态方法)
查看>>
ajax提交param 后台接受是对象
查看>>
ajax基础一
查看>>
http://cuiqingcai.com/993.html
查看>>
【NOI2018模拟5】三角剖分Bsh
查看>>
redis安装使用
查看>>