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
原创粉丝点击