您的位置:首页 > 其它

Cookie相关基础

2018-01-30 22:21 106 查看
1) 创建Cookie对象,

public Cookie(java.lang.String name,

java.lang.String value)

参数1:表示cookie名称

参数2:表示cookie名称对应的内容

2) 发送cookie数据(服务器发送cookie数据到浏览器中)

set-cookie:请求头: 携带内容(最基本的方式)

简写方式:服务器发送Cookie

void addCookie(Cookie cookie)

3) 服务器会携带cookie到浏览器(自发:浏览器自发的将cookie保存起来),方便下一次服务器传递数据

4) 服务器获取cookie数据

原理:获取的请求头:cookie名称获取内容(最基本的)

简写方式:

Cookie[] getCookies()

Cookie技术的一些细节:

1) 细节1:当前浏览器中发现中文cookie 数据,获取cooike名称对应的内容,需要进行解密(同时,对中文进行加密)

使用的是两个工具类:URLEncorder类和URLDecorder类

2) 细节2:设置cookie的有效时间

public void setMaxAge(int expiry) :

参数分为三种情况:

1) 如果参数为正整数,表示多少秒之后,cookie数据失效了(不存在了)

2) 如果参数是一个负整数,一般情况指定-1,关闭浏览器,cookie就不存在了

3) 如果参数是一个0,那么指定同名的cookie的名称,然后该cookie数据会被删除掉!

4) 细节3:cookie的有效路径

public void setPath(java.lang.String uri):当前cookie的数据是在有效路径下才会起作用,否则,获取不到cookie数据

一般情况:一个站点可以存储多少个cookie数据,不超过300个,可能用到20个作用

public class CookieDemo extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//创建cookie对象
Cookie coo = new Cookie("name","Rong");

//中文格式
String name = URLEncoder.encode("蓉","utf-8");
Cookie coo2 = new Cookie("name", name);

//设置有效路径
//      coo.setPath("/Develop_Servlet_Cookie001");
//
4000
coo2.setPath("/Develop_Servlet_Cookie002");
//简写,发送到浏览器
//      response.addCookie(coo);
response.addCookie(coo2);

//-1:关闭浏览器就删除cookie。正整数:保存时间
coo.setMaxAge(-1);
coo2.setMaxAge(5);

//获取cookie参数
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies) {
String coo_name = cookie.getName();
String coo_value = cookie.getValue();
//解析获得的值
String coo_devalue = URLDecoder.decode(coo_value, "utf-8");
System.out.println("名:"+coo_name+"\t值:"+coo_devalue);
}
}

}

}


输出系统时间和上次登录时间:

public class TimeDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//创建系统时间,格式化时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String CurTime = sdf.format(new Date());

//获取cookie数据
Cookie[] cookies = request.getCookies();

//设立初始值
String LastTime = null;
//第一次访问
if(cookies==null && LastTime==null){

//输出系统时间
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("第一次系统时间:"+CurTime);

//编码,创建cookie文件
String en_time = URLEncoder.encode(CurTime, "utf-8");
Cookie last_cook = new Cookie("lasttime", CurTime);
response.addCookie(last_cook);

}

//第二次之后访问,遍历输出数据
if(cookies!=null){
for(Cookie cookie:cookies){
//获取数值
LastTime = cookie.getValue();
//解码文件
String de_LTime = URLDecoder.decode(LastTime, "utf-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("上次登录时间"+de_LTime+"<br/>系统时间:"+CurTime);

//更新时间
CurTime = URLEncoder.encode(CurTime, "utf-8");
cookie.setValue(CurTime);
response.addCookie(cookie);

}
}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: