因为可能要用到cookie,所以学了一下,但又发现不用了,
为了以后不忘,写下此篇笔记。
一、cookie简介
浏览器与WEB服务器之间是使用HTTP协议进行通信的;而HTTP协议是无状态协议。
也就是说,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。
因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,
这样的不好之处可想而知。
为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,
它是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。
它是服务器发送给浏览器的体积很小的纯文本信息。
定义:cookie是Web浏览器存储的少量命名数据,它与某个特定的网页和网站关联在一起。
cookie实际上和某一网站和网页关联的,保存用户一定信息的文本文件。
二、cookie的属性
除名字与值外,每个cookie有四个可选属性:
1.expires:指定cookie的生存期。默认情况下cookie是暂时的,浏览器关闭就失效。
2.path:它指定了与cookie关联在一起的网页。默认是在和当前网页同一目录的网页中有效。
如果把path设置为"/",那么它对该网站的所有网页都可见了。
3.domain:设定cookie有效的域名,
如果把path设置为"/",把domain设为".sohu.com",那么 A.sohu.com和B.sohu.com
的所有网页都能够访问此cookie。
4.secure:布尔值,它指定了网络上如何传输cookie。默认情况下,cookie是不安全的,
可以通过一个不安全的,普通的HTTP协议传输;若设置cookie为安全的,那么它将
只在浏览器和服务器通过HTTPS或其它的安全协议连接在一起时才被传输。
三、cookie的操作
cookie可以用javascipt来操作,也可以用JSP来操作。
下面给大家我写的几个例子,相信大家一看就明白了:
1.javascript 操作:
<script language="javascript">
//设置cookie,cookie有效期时间未GMT时间(距1970年1月1日临时的毫秒)
//例如可以设置setCookie("password","12345",(3600000*24*180)),180有效
function setCookie (name, value, expires) {
var expdate = new Date();
expdate.setTime(expdate.getTime() + expires);
document.cookie = name + "=" + escape(value) +
"; expires=" + expires.toGMTString() + "; path=/";
}
//根据cookie名,取得cookie值
function getCookie(name) {
var search;
search = name + "="
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length ;
end = document.cookie.indexOf(";", offset) ;
if (end == -1)
end = document.cookie.length;
return unescape(document.cookie.substring(offset, end));
}
else
return "";
}
//删除某一cookie
function deleteCookie(name) {
var expdate = new Date();
expdate.setTime(expdate.getTime() - (3600 *24* 1000 * 1));
setCookie(name, "", expdate);
}
//检查是否存在此cookie
function checkCookie(cookieName,cookieValue){
if (getCookie(cookieName)==cookieValue){
return true;
}else{
return false;
}
}
</script>
|
2.jsp 操作:
java中有个Cookie类:javax.servlet.http.Cookie
//读取cookie的通用类,以Cookie[] 做参数传个构造函数;
package com.test;
import javax.servlet.http.*;
/**
* @author sheng_li
*
*/
public class ComCookie {
private Cookie[] cookies;
private Cookie cookie;
public ComCookie(Cookie[] cs){
cookies = cs;
}
/**
* 通过cookieName,取得cookieValue,如果没有此cookie则返回默认值
* @param cookieName
* @param defaultValue
* @return
*/
public String getCookieValue(String cookieName,String defaultValue) {
for(int i=0; i< cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName()))
return(cookie.getValue());
}
return(defaultValue);
}
/**
* 类方法,通过cookieName,取得cookieValue
* @param cookies
* @param cookieName
* @param defaultValue
* @return
*/
public static String getCookieValue(Cookie[] cookies,
String cookieName,
String defaultValue) {
for(int i=0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName()))
return(cookie.getValue());
}
return(defaultValue);
}
}
|
JSP中:(以下内容来源于网络)
JSP是使用如下的语法格式来创建cookie的:
Cookie cookie_name =new Cookie("Parameter","Value");
例如:Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);
解释:JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值来创建Cookie,然后 Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头,本例中Cookie对象有两个字符串参数:username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符: @ : ;? , " / [ ] ( ) =
处理Cookie的属性
看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创建Cookie而不知道怎么使用是不够的。在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性,现把Cookie的主要属性,及其方法列于下,供大家参考:
读取客户端的Cookie
类型 |
方法名 |
方法解释 |
String |
getComment() |
返回cookie中注释,如果没有注释的话将返回空值. |
String |
getDomain() |
返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com) |
int |
getMaxAge() |
返回Cookie过期之前的最大时间,以秒计算。 |
String |
getName() |
返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName。 |
String |
getPath() |
返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。 |
boolean |
getSecure() |
如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。 |
String |
getValue() |
返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。 |
int |
getVersion() |
返回Cookie所遵从的协议版本。 |
void |
setComment(String purpose) |
设置cookie中注释。 |
void |
setDomain(String pattern) |
设置cookie中Cookie适用的域名 |
void |
setMaxAge(int expiry) |
以秒计算,设置Cookie过期时间。 |
void |
setPath(String uri) |
指定Cookie适用的路径。 |
void |
setSecure(boolean flag) |
指出浏览器使用的安全协议,例如HTTPS或SSL。 |
void |
setValue(String newValue) |
cookie创建后设置一个新的值。 |
void |
setVersion(int v) |
设置Cookie所遵从的协议版本。 |
在Cookie发送到客户端前,先要创建一个Cookie,然后用addCookie方法发送一个HTTP Header。
JSP将调用request.getCookies()从客户端读入Cookie,getCookies()方法返回一个HTTP请求头中
的内容对应的Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各
个Cookie的名字,至找到目标Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值 。
例如
<!----><!----><%
String userName=request.getParameter("username");//从提交的HTML表单中获取,用户名
Cookie theUsername=new Cookie("username",userName);//以"username",userName值/对创建一个Cookie
response.addCookie(theUsername);
%>
..............
<%
Cookie myCookie[]=request.getCookies();//创建一个Cookie对象数组
for(int n=0;n=cookie.length-1;i++);//设立一个循环,来访问Cookie对象数组的每一个元素
Cookie newCookie= myCookie[n];
if(newCookie.getName().equals("username")); //判断元素的值是否为username中的值
{%>
你好,<%=newCookie.getValue()%>!//如果找到后,向他问好
<%}
%>
设置Cookie的存在时间,及删除Cookie 在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,
参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。 注意这个值是cookie将要存在的最大时间,
而不是cookie现在的存在时间。 负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。 如:
<%
Cookie deleteNewCookie=new Cookie("newcookie",null);
deleteNewCookie.setMaxAge(0);
deleteNewCookie.setPath("/");
response.addCookie(deleteNewCookie);
%>
|
jsp设置页面过期
服务端方法:
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", -10);
%>
在登陆页面和登陆后页面均加入这段代码即可
注意,一定要在登陆页面(或类似功能的页面使session无效)
客户端方法:
meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta 的属性有两种:name和http-equiv。name属性主要用于描述网页,对应于content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类)。这其中最重要的是description(站点在搜索引擎上的描述)和keywords(分类关键词),所以应该给每页加一个meta值。比较常用的有以下几个:
name 属性
1、<meta name="Generator" contect="">用以说明生成工具(如Microsoft FrontPage 4.0)等;
2、<meta name="KEYWords" contect="">向搜索引擎说明你的网页的关键词;
3、<meta name="DEscription" contect="">告诉搜索引擎你的站点的主要内容;
4、<meta name="Author" contect="你的姓名">告诉搜索引擎你的站点的制作的作者;
5、<meta name="Robots" contect= "all|none|index|noindex|follow|nofollow">
其中的属性说明如下:
设定为all:文件将被检索,且页面上的链接可以被查询;
设定为none:文件将不被检索,且页面上的链接不可以被查询;
设定为index:文件将被检索;
设定为follow:页面上的链接可以被查询;
设定为noindex:文件将不被检索,但页面上的链接可以被查询;
设定为nofollow:文件将不被检索,页面上的链接可以被查询。
http-equiv属性
1、<meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80"> 和 <meta http-equiv="Content-Language" contect="zh-CN">用以说明主页制作所使用的文字以及语言;又如英文是ISO-8859-1字符集,还有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集;
2、<meta http-equiv="Refresh" contect="n;url=http://yourlink">定时让网页在指定的时间n内,跳转到页面http;//yourlink;
3、<meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT">可以用于设定网页的到期时间,一旦过期则必须到服务器上重新调用。需要注意的是必须使用GMT时间格式;
4、<meta http-equiv="Pragma" contect="no-cache">是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从Cache中再调出;
5、<meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">cookie设定,如果网页过期,存盘的cookie将被删除。需要注意的也是必须使用GMT时间格式;
6、<meta http-equiv="Pics-label" contect="">网页等级评定,在IE的internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过meta属性来设置的;
7、<meta http-equiv="windows-Target" contect="_top">强制页面在当前窗口中以独立页面显示,可以防止自己的网页被别人当作一个frame页调用;
8、<meta http-equiv="Page-Enter" contect="revealTrans(duration=10,transtion= 50)">和<meta http-equiv="Page-Exit" contect="revealTrans(duration=20,transtion =6)">设定进入和离开页面时的特殊效果,这个功能即FrontPage中的“格式/网页过渡”,不过所加的页面不能够是一个frame页面。
分享到:
相关推荐
js操作Cookie子键+Jquery调用Ajax方法执行后台操作 返回值给前台。详细注释 Demo
' 设置Cookie 的 过期时间 2001/12/31 23:59:59 objCookieObject.Expires = New DateTime(2001, 12, 11, 23, 59, 59) ' 下面的这些可以不使用 objCookieObject.Domain = "www.asp888.net" objCookieObject.Path = ...
js写的方法,可以设置cookie和获取cookie值,简单易懂
java 操作cookie精选,基础的操作,简单易学
jsp操作cookie实例,jsp操作cookie实例,jsp操作cookie实例,jsp操作cookie实例
C# cefsharp 多账号同时登陆,设置cookie隔离,修改部分浏览器指纹,源码仅供学习交流,后续可以加自动加购和不惧反爬虫等操作
//设置cookie的值$.cookie(’the_cookie’, ‘the_value’, {expires ‘/’, domain true});//新建一个cookie 包括有效期 路径 域名等$.cookie(’the_cookie’, ‘the_value’); //新建cookie$.cookie(’the_cookie...
jquery 设置cookie、删除cookie、获取cookie
jquery验证form,表单,操作cookie 插件
C#操作cookie,解密加密cookie
并且在Cookie详解这篇文章中,介绍了如何在服务器端和使用JavaScript创建Cookie,并设置属性。 我们知道,Cookie是存储在客户端的,并且现在前后端分离慢慢变得流行起来,因此如何在浏览器上可以使用方便快捷的...
详解操作cookie的原生方法cookieStore ... 新方式 cookieStore 2.1 基本方法2.2 设置 cookie2.3 获取 cookie2.4 获取所有的 cookie2.5 删除 cookie2.6 监听 cookie 的变化 2.1 基本方法 2.2 设置 cookie 2
javascript 操作cookiejavascript 操作cookiejavascript 操作cookie
JS的COOKIE设置和清楚,写好的一个函数,方便调用,可直接写成函数的方式
一个用于操作cookie的Vue插件,使用简单,无依赖
Js 操作cookie源码封装Js 操作cookie源码封装
// 设置cookie $.cookie('the_cookie', 'the_value', { expires: 7 }); //设置带时间的cookie $.cookie('the_cookie', '', { expires: -1 }); // 删除 $.cookie('the_cookie', null); // 删除 cookie $.cookie('the...
NULL 博文链接:https://492664447-qq-com.iteye.com/blog/1565952
js的cookie:包括得到cookie 设置cookie和删除cookie的代码
js简单操作cookie,常用方法 包含了设置cookie,得到cookie,移除cookie,验证是否存在cookie,获得所有cookie