目前项目有需求做了一个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);}}
}

JAVA远程session访问,访问独立SESSION服务器相关推荐

  1. java 登录编程_Java编程通过session访问需要登录的页面

    使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容. 不过如果是需要登录后才能访 ...

  2. 服务器读取本地文件,java远程服务器访问本地文件

    java远程服务器访问本地文件 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等场景均可能导致云服务器无法正常登录.本节操作介绍无法登录Linux弹性云服务器 ...

  3. java访问文件服务器,java远程服务器访问本地文件

    java远程服务器访问本地文件 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等场景均可能导致云服务器无法正常登录.本节操作介绍无法登录Linux弹性云服务器 ...

  4. JSP访问数据库,Session对象和九大内置对象

    文章目录 JSP访问数据库 Session对象 JSP九大内置对象 JSP访问数据库 JSP就是在HTML中嵌套的java代码,因此java代码可以卸载JSP中(<% - %>) 导包操作 ...

  5. 利用Linux系统搭建网站(含相关,域名申请,服务器选择,Java JDK安装,数据库配置,域名绑定服务器,服务器绑定域名),最终实现通过域名访问你的网站项目,创作不易,如果对你有帮助的还请点赞支持

    搭建之前的理论知识 先来简略说一下什么是域名,什么是服务器 域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时 ...

  6. php java session共享_PHP实现多服务器session共享之NFS共享

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 前言,Nio大侠提出了session多服务器共享的问题,原文请见 ...

  7. Java web后端4 会话 Cookie Session

    会话 会话:指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应的过程. 客户端和服务器的请求和响应的过程(对话双方只要有一方发生变化,都属于不同的会话) 超时间隔[距离上一次请求的 ...

  8. java web 对cookie技术、session技术进行小结

    2019独角兽企业重金招聘Python工程师标准>>> Session是一种服务器端技术, Session 对象在服务器端创建,通常采用散列表来存储信息,例如, Tomcat 的 S ...

  9. Session超时管理以及Session实现自动登录——java web实验

    一.Session超时管理 在实际网站用户登陆后,在浏览其他页面过程中,可能中间会有其他事情停顿,一段时间内没有对该网站页面再次发送请求访问,待到一定时间过后(即保存登陆用户信息的session超时) ...

  10. 【内网穿透服务器】使用Frp外网访问内网FTP服务器(以访问内网samba服务为例)

    使用Frp外网访问内网FTP服务器(以访问内网samba服务为例) FTP是基于TCP的服务,使用两个端口,命令端口和数据端口,命令端口是21,数据端口在主动模式下为20,在被动模式随机分配. FTP ...

最新文章

  1. R语言Kmeans聚类、抽取聚类簇:fpc包的kmeansruns函数通过Calinski-Harabasz准则和平均轮廓系数(ASW)为Kmeans选择最优的聚类K值、并与层次聚类的最优K值进行比较
  2. C#中throw抛出异常后,后续代码执行情况
  3. redis 设置连接数配置修改 java 最大连接数_Spring Boot集成mysql与Redis
  4. 据说一般人轻易做不了技术支撑…
  5. - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
  6. 一些数学小公式/定理的证明
  7. spicy命令_Spicy Spring:动态创建自己的BeanDefinition
  8. mysql设计一个简单的系统_一个简单数据库设计例子
  9. Qt 设置当前窗口出现在左右窗口的最前面
  10. boost文件锁的使用
  11. [数据仓库]数据仓库和数据库的区别
  12. python解释器哪个版本好_python解释器有几种
  13. kvaser 驱动修复(linux)
  14. 软件测试场景 例子,软件测试基础(六)用例设计方法之场景法
  15. php 按钮外观怎么改变,php 按钮样式
  16. 开发了一个监控网站与接口宕机,并推送 App 消息提醒的程序
  17. CF1090H Linearization
  18. 怎么复制网页上不能复制的文字
  19. A-level 课程:最受欢迎和最不受欢迎的学科
  20. Microsoft Dynamics CRM Javascript定制表单左边导航栏

热门文章

  1. 算法开发:将合并后的模型编译成动态库(so文件)提供给qt调用
  2. 几种下载慢的解决办法
  3. 社交电商如何持续进化?来看看最新的拼团玩法——七人拼团
  4. Linux:査看文件的详细信息
  5. 【SCIR笔记】Transformer及其变种
  6. VMware vCenter Server 7.0安装配置
  7. 查看数据是否成功发送到kafka
  8. 计算机考研考线代和概率论吗,关于考研数学线代和概率论的暑期复习扫尾建议...
  9. 端午特供——小朋友都会写的【狂扁·大粽子】
  10. Linux网络包接收过程