一.cookie的作用
cookies给网站和用户带来的好处非常多:
- Cookie能使站点跟踪特定访问者的访问次数、最后访问时间等;
- Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告;
- Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点;
Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务
在JSP中 我们也可以使用Cookie,来编写一些功能强大的应用程序。
二.Cookie类的主要方法:
- int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
- int setMaxAge() 设置Cookie过期时间,以秒计算。
- String getName() 返回Cookie的名字
- String getValue() 返回Cookie的值。
void setValue(String newValue) cookie创建后设置一个新的值。
获取登录用户名和密码
<%
String username = "";
String password = "";
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++)
{
if ("username".equals(cookies[i].getName())){
username = cookies[i].getValue();
}else if("password".equals(cookies[i].getName())){
password = cookies[i].getValue();
}
}
%>
//创建两个Cookie对象
Cookie nameCookie = new Cookie("username", name);
Cookie pwdCookie = new Cookie("password", pwd);
nameCookie.setMaxAge(60 * 60 * 24 * 3);
//设置Cookie的有效期为3天
pwdCookie.setMaxAge(60 * 60 * 24 * 3);
response.addCookie(nameCookie);
response.addCookie(pwdCookie);
读取cookie的时候,为了方便操作,我们希望封装一个函数,只要我们提供cookie的name,我们便可以获取cookie的value,带着这个想法,很容易想到将cookie封装到Map里面,于是进行下面的封装
public static Cookie getCookieByName(HttpServletRequest request,String name){
Map<String,Cookie> cookieMap = ReadCookieMap(request);
if(cookieMap.containsKey(name)){
Cookie cookie = (Cookie)cookieMap.get(name);
return cookie;
}else{
return null;
}
}
/**
* 将cookie封装到Map里面
* @param request
* @return
*/
private static Map<String,Cookie> ReadCookieMap (HttpServletRequest request) {
Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
Cookie[] cookies = request.getCookies();
if(null!=cookies){
for(Cookie cookie : cookies){
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
js 获取cookie中的一个值
var username=document.cookie.split(";")[0].split("=")[0];
//得到 token
document.cookie="name="+vakue; //在cookie中添加一条k-v