• Cookie的存取


    package com.util;
    
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.util.concurrent.CountDownLatch;
    
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.concurrent.FutureCallback;
    import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;
    import org.apache.http.nio.client.HttpAsyncClient;
    import org.apache.log4j.Logger;
    
    /**
     * 标题: WebsConnByHttpClient 说明: 通过HttpClient 或 HttpAsyncClient 的 servlet或者Action
     * 之间的信息连接业务类              2013.03.14 NAME: wangchanglin
     * 
     * 修改信息 修改日期 修改者 修改ID 修改内容
     */
    public class WebserviceAssistant {
        private static final Logger logger = Logger.getLogger(WebserviceAssistant.class);
    
        /**
         * Webs间的接口调用
         * 
         * @param wsURL
         *            用HttpClient所需的URL参数
         * @return restult 业务处理结果
         * @throws IOException
         **/
        public static String getResultByHttpClient(String wsURL) throws IOException {
            HttpClient httpclient = new HttpClient();
            GetMethod httpget = new GetMethod(wsURL);
            httpget.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
    
            try {
                httpclient.executeMethod(httpget);
                String result = httpget.getResponseBodyAsString();
                return result;
            } finally {
                httpget.releaseConnection();
            }
        }
    
        /**
         * 通过HttpClient接口获取布尔结果
         * 
         * @param reqURL
         * @throws HttpException
         * @throws IOException
         * @return true false
         */
        public static boolean getHttpClientBoolean(String reqURL) throws IOException {
            // 构造HttpClient的实例
            HttpClient httpClient = new HttpClient();
            // 创建GET方法的实例
            GetMethod getMethod = new GetMethod(reqURL);
            // 使用系统提供的默认的恢复策略
            getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
            try {
                // 执行getMethod
                httpClient.executeMethod(getMethod);
                // 读取内容
                String result = getMethod.getResponseBodyAsString();
                return new Boolean(result);
            } finally {
                // 释放连接
                getMethod.releaseConnection();
            }
        }
    
        /**
         * Webs间的接口调用
         * 
         * @param wsURL
         *            用HttpClient所需的URL参数
         * @return restult 业务处理结果
         * @throws IOException
         **/
        public static String getResultByHttpClientThrowTimeOut(String wsURL) throws IOException {
            HttpClient httpclient = new HttpClient();
            httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
            httpclient.getHttpConnectionManager().getParams().setSoTimeout(7000);
            GetMethod httpget = new GetMethod(wsURL);
            httpget.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
            try {
                httpclient.executeMethod(httpget);
                String result = httpget.getResponseBodyAsString();
                return result;
            } catch (IOException e) {
                logger.error(e);
                throw e;
            } finally {
                httpget.releaseConnection();
            }
        }
    
        /**
         * Webs间的接口调用 HttpClient 的异步调用实现
         * 
         * @param wsURL
         *            用HttpClient所需的URL参数
         * @throws IOException
         * @throws InterruptedException
         **/
        public static void getResultAsynByHttpClient(String wsURL) throws IOException, InterruptedException {
            HttpAsyncClient httpclient = new DefaultHttpAsyncClient();
            httpclient.start();
            HttpGet[] requests = new HttpGet[] { new HttpGet(wsURL), };
            final CountDownLatch latch = new CountDownLatch(requests.length);
            try {
                for (final HttpGet request : requests) {
                    httpclient.execute(request, new FutureCallback<HttpResponse>() {
    
                        @Override
                        public void completed(final HttpResponse response) {
                            latch.countDown();
                        }
    
                        @Override
                        public void failed(final Exception ex) {
                            latch.countDown();
                            ex.printStackTrace();
                        }
    
                        @Override
                        public void cancelled() {
                            latch.countDown();
                        }
    
                    });
                }
            } finally {
                latch.await();
                httpclient.shutdown();
            }
        }
    
        /**
         * 获取客户端真实IP<br/>
         * 解决多重转发获取假IP问题
         * 
         * @param request
         *            HttpServletRequest
         * @return 客户端真实IP
         */
        public static String getIpAddr(HttpServletRequest request) {
            String ip = request.getHeader("x-forwarded-for");
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
            return ip;
        }
    
        /**
         * 添加指定名字的cookie值
         * 
         * @param response
         *            HttpServletResponse
         * @param cookieName
         *            cookie名
         * @param cookieValue
         *            cookie值
         * @throws UnsupportedEncodingException
         */
        public static void addCookieByName(HttpServletResponse response, String cookieName, String cookieValue) throws UnsupportedEncodingException {
            String utf = URLDecoder.decode(cookieValue, "utf-8");
            Cookie cookie = new Cookie(cookieName, utf);
            cookie.setVersion(1);
            // cookie.setMaxAge(60 * 60 * 24 * 7);// 默认1周内有效
            cookie.setMaxAge(60 * 10);// 10分钟有效
            cookie.setDomain(ConstUtil.CJTCDOMAINURL);
            cookie.setPath("/");
            response.setHeader("P3P", "CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'");
            response.addCookie(cookie);
        }
    
        /**
         * 删除指定名字的cookie值
         * 
         * @param request
         *            HttpServletRequest
         * @param response
         *            HttpServletResponse
         * @param cookieName
         *            cookie名
         */
        public static void deleteCookieByName(HttpServletResponse response, String cookieName) {
            Cookie cookie = new Cookie(cookieName, "");
            cookie.setMaxAge(0);
            cookie.setDomain(ConstUtil.CJTCDOMAINURL);
            cookie.setPath("/");
            response.setHeader("P3P", "CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'");
            response.addCookie(cookie);
        }
    
        /**
         * 获取指定名字的cookie
         * 
         * @param request
         *            HttpServletRequest
         * @param cookieName
         *            cookie名
         * @return cookie值
         */
        public static String getCookieValueByName(HttpServletRequest request, String cookieName) {
            Cookie[] cookies = request.getCookies();
            if (cookies != null) {
                for (Cookie cookie : cookies) {
                    // cookie.setDomain(ConstUtil.CJTCDOMAINURL);
                    // cookie.setPath("/");
                    if (cookie != null && cookieName.equals(cookie.getName())) {
                        logger.debug("cookie.getName():" + cookie.getName() + "	cookie.getValue():" + cookie.getValue() + "	cookie.getDomain():" + cookie.getDomain()
                                + "	cookie.getPath():" + cookie.getPath());
                        return cookie.getValue();
                    }
                }
            }
            return null;
        }
    
        
    }
  • 相关阅读:
    财务系统重复付款case分析及解决方案
    MySQL体系结构
    安装篇九:安装wordpress(5.4版本)
    安装篇八:配置 Nginx 使其支持 MySQL 应用
    安装篇七:配置 Nginx 使其支持 PHP 应用
    安装篇六:安装PHP(7.2.29版本)
    安装篇五:安装MySQL(5.6.38版本)
    安装篇四:安装NGINX(1.4.0版本)
    安装篇三:系统初始化设置
    安装篇二:CentOS 6.9系统安装
  • 原文地址:https://www.cnblogs.com/lbangel/p/3526835.html
Copyright © 2020-2023  润新知