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() + "\tcookie.getValue():" + cookie.getValue() + "\tcookie.getDomain():" + cookie.getDomain()

                            + "\tcookie.getPath():" + cookie.getPath());

                    return cookie.getValue();

                }

            }

        }

        return null;

    }



    

}

 

你可能感兴趣的:(cookie)