博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
session 共享
阅读量:6905 次
发布时间:2019-06-27

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

** * 远程Session * 存放在Memcached缓存服务器里的Session * @author lx * */public class CacheSessionProvider implements SessionProvider {
@Autowired private MemCachedClient memCachedClient; private final String SESSIONID="sessionId"; //设置数据保存在memcached的保存时间 private final Integer expiry=30*60; /** * 将session的值通过sessionId值存入memcached中 */ public void setAttribute(HttpServletRequest request, String name, Serializable value,HttpServletResponse response) { // TODO Auto-generated method stub Map
session=new HashMap
(); session.put(name, value); String sessionId=getSessionId(request, response); memCachedClient.set(sessionId, session, expiry); }/** * 通过用户本地的sessionId值到服务器获取session * 从缓存服务器memcached中获取sessionId值对应的session */ public Serializable getAttribute(HttpServletRequest request, String name,HttpServletResponse response) { // TODO Auto-generated method stub String sessionId=getSessionId(request, response); Map
session = (Map
)memCachedClient.get(sessionId); //返回保存在session中的用户数据 if(session!=null){ return session.get(name); } return null; } /** * * 删除缓存服务器memcached中中key=sessionId,这样用户即使 * 通过本地的sessionID也获取不到用户的数据 */ public void logout(HttpServletRequest request,HttpServletResponse response) { // TODO Auto-generated method stub //用户本地cookie String sessionId=getSessionId(request, response); if(memCachedClient.keyExists(sessionId)){ memCachedClient.delete(sessionId); } }/** * 获取sessionId,如果用户没有sessionId,则为用户创建一个sessionId */ public String getSessionId(HttpServletRequest request,HttpServletResponse response) { //获取存储在cookie的sessionId Cookie[] cookies = request.getCookies(); if(cookies!=null && cookies.length>0){ for (Cookie cookie : cookies) { if(SESSIONID.equals(cookie.getName())){ return cookie.getValue(); } } } //如果没有sessionId,为用户创建一个 String sessionId=UUID.randomUUID().toString().replaceAll("-", ""); Cookie cookie=new Cookie(SESSIONID, sessionId); cookie.setMaxAge(-1);// 默认-1,代表关闭浏览器就销毁cookie cookie.setPath("/"); response.addCookie(cookie); return sessionId; }

转载于:https://www.cnblogs.com/feiZhou/p/9344195.html

你可能感兴趣的文章
【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
查看>>
微信浏览器关闭H5页面
查看>>
ANDROID开机动画分析
查看>>
Android 数字签名学习笔记
查看>>
以Lockbits的方式访问bitmap
查看>>
Javassist介绍
查看>>
Robot Framework 快速入门_中文版
查看>>
Java 开源博客——B3log Solo 0.6.0 正式版发布了!
查看>>
反射IsGenericType
查看>>
django 其他地址访问不了问题
查看>>
hibernate 需要的jar包
查看>>
Ubuntu 14.04 Remmina远程桌面连接Windows计算机
查看>>
iphone 判断某一目录是否包含文件夹
查看>>
[转载] iphone 创建iPhone锁定划动条的方法
查看>>
C# winfrom下绘制圆角窗体
查看>>
浏览器新开页面或刷新页面标志
查看>>
第12课:HTML+CSS的基础用法
查看>>
C#获取当前程序运行路径的方法集合//获取当前进程的完整路径
查看>>
查询当前数据库事务隔离等级
查看>>
程序员总结分析:为什么要用原生 JavaScript 代替 jQuery?
查看>>