概述
Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
例子:
public void doGet(HttpServletRequest request, HttpServletResponse response) {
//1.将数据写入Cookie
//实例化一个Cookie
Cookie cookie = new Cookie(Constants.BUYCART_COOKIE, json.toString()); // (name,value);
//注意:由于cookie的value值只能装字符串,所以我们将购物车对象(buycart)转化为json,再将json写入cookie的value值
//关闭浏览器也要有Cookie,那就给它个生存时间就可以了
cookie.setMaxAge(3600 * 24);
//设置cookie路径
cookie.setPath("/");
//写入肯定是要用response
response.addCookie(cookie);
//2.从Cookie中获取数据,就是读
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie c : cookies) {
if (Constants.BUYCART_COOKIE.equals(c.getName())) {
//拿到cookie名为Constants.BUYCART_COOKIE中的value
String value = c.getValue();
try {
// 将value转成对象,即购物车
buyCart = om.readValue(value.toString(), BuyCart.class);
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}
}
Cookie的修改、删除
Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。
如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。注意是0而不是负数。负数代表其他的意义。读者可以通过上例的程序进行验证,设置不同的属性。
注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
Cookie的路径
domain属性决定运行访问Cookie的域名,而path属性决定允许访问Cookie的路径(ContextPath)。例如,如果只允许/sessionWeb/下的程序使用Cookie,可以这么写:
Cookie cookie = new Cookie("time","20080808"); // 新建Cookie
cookie.setPath("/session/"); // 设置路径
response.addCookie(cookie); // 输出到客户端
设置为“/”时允许所有路径使用Cookie。path属性需要使用符号“/”结尾。name相同但domain相同的两个Cookie也是两个不同的Cookie。
注意:页面只能获取它属于的Path的Cookie。例如/session/test/a.jsp不能获取到路径为/session/abc/的Cookie。
cookie中存取中文
要想在cookie中存储中文,那么必须使用URLEncoder类里面的encode(String s, String enc)方法进行中文转码,例如:
Cookie cookie = new Cookie("userName", URLEncoder.encode("老李", "UTF-8"));
response.addCookie(cookie);
在获取cookie中的中文数据时,再使用URLDecoder类里面的decode(
String
s,
String
enc)进行解码,例如:
URLDecoder.decode(cookies[i].getValue(), "UTF-8")
还可详见此篇博客: http://blog.csdn.net/fangaoxin/article/details/6952954
最后
以上就是贪玩奇异果为你收集整理的SSM总结:Cookie篇的全部内容,希望文章能够帮你解决SSM总结:Cookie篇所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复