package com.ulearning.ulms.util;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.ulearning.ulms.core.utils.Constants; public class CookieUtil {
/*
* 从给定的request中查找cookie
*/
public static String getCookie(HttpServletRequest request,String cookieName){
String rt=null;
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{ for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(c.getName().equalsIgnoreCase(cookieName))
{
rt= c.getValue();
break;
}
}
}
try {
if(rt !=null){
rt = URLDecoder.decode(rt,"utf-8");
}else{
rt = (String)request.getAttribute(cookieName);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rt;
}
/**
* 删除,某一个cookie
* @param request
* @param cookieName
* @return
*/ public static void clearCookie(HttpServletRequest request,HttpServletResponse response,String cookieName){
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{ for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(!c.getName().equalsIgnoreCase(cookieName))
{
c.setValue(null);
c.setMaxAge(0);
c.setPath("/");
response.addCookie(c);
break;
}
}
}
} public static int getCookieInt(HttpServletRequest request,String cookieName){
int res = 0;
String rt=null;
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{ for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(c.getName().equalsIgnoreCase(cookieName))
{
rt= c.getValue();
break;
}
}
}
try {
if(rt !=null)
{
rt = URLDecoder.decode(rt,"utf-8");
res = Integer.parseInt(rt);
}else{
rt = (String)request.getAttribute(cookieName);
res = rt!=null ? Integer.parseInt(rt) : 0;
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
} public static void clearCookie(HttpServletRequest request,HttpServletResponse response){
String rt=null;
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
if(!c.getName().equalsIgnoreCase(Constants.SHOPPING_CART_KEY))
{
c.setValue(null);
c.setMaxAge(0);
c.setPath("/");
response.addCookie(c);
/*rt= c.getValue();
break;*/
}
}
}
} //往cookie里面 写入值 name 是键 value 是 值
public static void addCookie(HttpServletResponse response, String name,
String value, int maxAge) {
try {
value=URLEncoder.encode(value,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} Cookie cookie = new Cookie(name, value);
if (maxAge > 0)
cookie.setMaxAge(maxAge);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at "+ System.currentTimeMillis());
response.addCookie(cookie);
} /**
* 方法描述:只从cookie中获取。如果不存在该cookie,返回null。
* @param request
* @param cookieName
* @return
* @author: Huyihui
* @version: 2012-9-25 上午11:03:04
*/
public static String getCookieOnly(HttpServletRequest request, String cookieName) {
Cookie[] cookieArr = request.getCookies();
if (cookieArr != null && cookieArr.length > 0) {
for (Cookie cookie : cookieArr) {
if (cookie.getName().equals(cookieName)) {
try {
return URLDecoder.decode(cookie.getValue(), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
return null;
} }

笔记

【笔记】cookies管理工具类的更多相关文章

  1. 并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理

    在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并 ...

  2. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  3. Android 软件管理工具类Utils

    Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...

  4. 阶段3 2.Spring_07.银行转账案例_4 编写事务管理工具类并分析连接和线程解绑

    事务管理工具类 首先需要有connection.并且是当前线程上的connection.声明connectionUtils.提供set方法等着spring来注入 有异常需要放在事务里面 close关闭 ...

  5. iOS核心笔记—源代码管理工具-GIT

    源代码管理工具-GIT 一. git 概述 1. git 简介? 什么是git? > git是一款开源的分布式版本控制工具 > 在世界上所有的分布式版本控制工具中,git是最快.最简单.最 ...

  6. Fragment管理工具类

    Fragment相关→FragmentUtils.java→Demo addFragment : 新增fragment removeFragment : 移除fragment replaceFragm ...

  7. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  8. [Guava学习笔记]Collections: 集合工具类

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3861431.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  9. Dialog对话框管理工具类

    import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; i ...

随机推荐

  1. jeecg表单页面控件权限设置(请先看官方教程,如果能看懂就不用看这里了)

    只是把看了官方教程后,觉得不清楚地方补充说明一下: 1. 2. 3. 4.用"jeecgDemoController.do?addorupdate"这个路径测试,不出意外现在应该可 ...

  2. [转]js获取域名、url、url参数值

    //获取域名host1 = window.location.host;host2 = document.domain; //获取页面完整地址url = window.location.href; 获取 ...

  3. python学习笔记-(十四)进程&协程

    一. 进程 1. 多进程multiprocessing multiprocessing包是Python中的多进程管理包,是一个跨平台版本的多进程模块.与threading.Thread类似,它可以利用 ...

  4. Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibr

    网上找了一大堆,没有解决的办法 ,主要是iOS10的适配问题,info.plist里没有加对. 访问相册,我只加了 <!-- 相册 --> <key>NSPhotoLibrar ...

  5. c语言求数组长度

    在定义数组的函数内 int arr[] = {12.12}; int length; length = ]; 在别的函数中作为引用数据类型引入时,以上方法失效: 解决方法1:再传一个int 类型的长度 ...

  6. Java类中各种静态变量的加载顺序的学习

    最近在补<thinking in java>...有一节提到了加载类需要做的一些准备...我照着书本敲了一下代码...同时稍微修改了一下书本上的代码.... package charpte ...

  7. mahout 安装测试

    1 下载 在http://archive.apache.org/dist/mahout下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息

  8. python基础知识

    由于python的灵活性,赋值前无需强调变量的数据类型,并且变量的数据类型在后期的操作过程中还可以改变,故不介绍关键字,直接定义方法及可以调用的方法. I  基本数据类型 一.字符串 1.使用单引号或 ...

  9. JSP Servlet的区别

    主要体现在两点 1.JSP是类servlet jsp说得简单点就是用另一套简单的规则写的servlet程序,它可以写java代码,还可以写html代码,JavaScript,css等等……,但是到服务 ...

  10. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...