JAVA远程session访问,访问独立SESSION服务器
来源:互联网 发布:淘宝流量下跌 编辑:程序博客网 时间:2024/06/05 17:44
目前项目有需求做了一个tomcat+redis的PAcount服务器,存储整个平台的session数据,整个业务侧不存储任何session信息,下面逻辑就是如何远程登陆并根据sessionID获取服务端session的逻辑
public class CookieSotreUtils { public static final String method = "POST"; public static final String charset = "UTF-8"; public static final String client_serviceUrl = "clientLogin"; public static final String mgr_serviceUrl = "mgrLogin"; public static final String MGR_COOKIE_KEY = "MGR_SESSION_ID"; public static final String CLIENT_COOKIE_KEY = "CLIENT_SESSION_ID"; public static String postParameters(String urlString, String param, HttpServletResponse response, HttpServletRequest request) throws IOException { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod(method); connection.setUseCaches(false); connection.setInstanceFollowRedirects(false); connection.setRequestProperty("Connection", "keep-alive"); connection.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.8"); connection.setRequestProperty("Accept-Encoding", "gzip, deflate"); connection.setRequestProperty("Accept", "application/json, text/javascript, */*; q=0.01"); connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); connection.setRequestProperty("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7"); connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"); connection.setRequestProperty("X-Requested-With", "XMLHttpRequest"); String path = url.getPath(); if (path.contains("client") || path.contains("Cutomer")) { Cookie cookie = getCookieByName(request, CLIENT_COOKIE_KEY); if (cookie != null) { connection.setRequestProperty("Cookie", "JSESSIONID=" + cookie.getValue()); } } else { Cookie cookie = getCookieByName(request, MGR_COOKIE_KEY); if (cookie != null) { connection.setRequestProperty("Cookie", "JSESSIONID=" + cookie.getValue()); } } connection.connect(); DataOutputStream dataOut = new DataOutputStream(connection.getOutputStream()); dataOut.writeBytes(param); dataOut.flush(); dataOut.close(); String cookieValue = connection.getHeaderField("Set-Cookie"); if (StringUtils.isNotEmpty(cookieValue)) { String JSESSIONID = cookieValue.substring("JSESSIONID=".length(), cookieValue.indexOf(";")); if (urlString.contains(client_serviceUrl)) { setCookie(CLIENT_COOKIE_KEY, JSESSIONID, response); } else if (urlString.contains(mgr_serviceUrl)) { setCookie(MGR_COOKIE_KEY, JSESSIONID, response); } } String result = IOUtils.toString(connection.getInputStream(), charset); connection.disconnect(); return result; } /** * 获取所有的cookie信息转为map集合 */ public static Map<String, Cookie> ReadCookieMap(HttpServletRequest request) { Map<String, Cookie> cookieMap = new HashMap<>(); Cookie[] cookies = request.getCookies(); if (null != cookies) { for (Cookie cookie : cookies) { cookieMap.put(cookie.getName(), cookie); } } return cookieMap; } /** * 根据名字获取cookie */ public static Cookie getCookieByName(HttpServletRequest request, String name) { Map<String, Cookie> cookieMap = ReadCookieMap(request); if (cookieMap.containsKey(name)) { return cookieMap.get(name); } else { return null; } } /** * 设置cookie信息(sessionId) * * @param key cookie key * @param val cookie value */ public static void setCookie(String key, String val, HttpServletResponse response) { Cookie cookie = new Cookie(key, val); if (key.equals(MGR_COOKIE_KEY)) { cookie.setDomain(".qiku.com"); } else { cookie.setDomain(".360os.com"); } //24小时过期 cookie.setMaxAge(60 * 60 * 24); cookie.setPath("/"); response.addCookie(cookie); } /** * 删除cookie信息(sessionId) * * @param cookie 要删除的cookie */ public static void removeCookie(Cookie cookie) { cookie.setValue(null); String key = cookie.getName(); if (key.equals(MGR_COOKIE_KEY)) { cookie.setDomain(".qiku.com"); } else { cookie.setDomain(".360os.com"); } cookie.setMaxAge(0); cookie.setPath("/"); } /** * 删除服务端cookie信息(sessionId) */ public static void removeMgrCookie(HttpServletRequest request, HttpServletResponse response) { Cookie cookie = getCookieByName(request, MGR_COOKIE_KEY); if (cookie != null) { removeCookie(cookie); response.addCookie(cookie); } } /** * 删除客户端cookie信息(sessionId) */ public static void removeClientCookie(HttpServletRequest request, HttpServletResponse response) { Cookie cookie = getCookieByName(request, CLIENT_COOKIE_KEY); if (cookie != null) { removeCookie(cookie); response.addCookie(cookie); } }}
0 0
- JAVA远程session访问,访问独立SESSION服务器
- 不同服务器的session访问
- java 访问网络设置session
- 服务器间访问session丢失的问题
- ASP.NET 访问 Web Service 服务器 Session
- session dataset 访问数据库
- session访问线程
- FLEX访问session
- session记录访问次数
- ashx 访问 session
- session访问控件
- 关于android客户端访问web服务器session问题。
- Android客户端访问服务器保持SESSION会话的实现
- iOS - 登陆获取访问服务器通行证 ( session)
- Android客户端访问服务器保持SESSION会话的实现
- linux搭建java服务器,实现远程访问
- PHP中SESSION(不能访问SESSION)
- mysql服务器远程访问
- onTaskRemoved() not getting called in HUAWEI and XIOMI devices
- JavaScript世界万物诞生记
- mahout中a读e--学习笔记
- docker安装telnet 命令【官方文档】
- 使用dg迁移32位oracle到64位oracle
- JAVA远程session访问,访问独立SESSION服务器
- unity在模型上绘画
- 反射Field
- 正则表达式
- java对list集合使用comparator方法比较排序
- mysql 利用binlog增量备份,还原实例(日志备份数据库)
- Android系统中GPS原始数据
- Maven私服Nexus详解
- 欢迎使用CSDN-markdown编辑器