Cookie:
如何建立一个Cookie(小饼干):
Cookie cookie = newCookie("userName",URLEncoder.encode(userName,"UTF-8"));
cookie.setMaxAge(3600 * 24 * 7);//设置生命长度
resp.addCookie(cookie);
1.直接新建一个cookie,设置两个参数,第一个为name属性(利用name获取第二个value属性)
2.value属性是不能有中文字的,所以需要进行,要有就需要转码:URLEncoder.encode(userName,”UTF-8”));
3.cookie有存在期限的,利用.setMaxAge(3600 * 24 * 7);来设置,它的时间单位为秒。
浏览器可以查询许多网页,那怎么区分你是哪一个呢?
那么浏览器会记录你的一个路径属性,便是通过这个来分辨你是谁。
注意:浏览器所获取的Cookie是有许多,Cookie之间的连接都是用 “,”连接,然后Cookie的键和值则是用“=”连接;如果在jsp中获取例如下:
这是html的body部分:
<body style="text-align:center;" onload="javascript:init();">
<form action="<%=basePath %>/login" method="POST">
<table style="style-top:50px; margin-left:auto; margin-right:auto;width:80%;">
<tr>
<td style="text-align:right;">用户名:</td><td style="text-align:left;"><input type="text" name="userName"></td>
</tr>
<tr>
<td style="text-align:right;">密 码:</td><td style="text-align:left;"><input type="password" name="userPwd"></td>
</tr>
<tr>
<td style="text-align;font-size:10px;"><input id="rememberMe" type="checkbox" name="rememberMe" value="sure"></td><td style="text-align:left;font-size:10px;">七天内记住我</td>
</tr>
<tr>
<td colspan="1"><input type="submit" value="登录" /> <input type="reset" value="重置" /></td>
</tr>
</table>
</form>
</body>
这是js的init()方法部分
function init(){
var cookie = document.cookie;
if(cookie){
cookie = cookie.trim();
var cookies = cookie.split(";");
for(var i=0; i<cookies.length; i++){
var singleCookies = cookies[i].split("=");
var cookieName = singleCookies[0].trim();
var cookievalue = singleCookies[1].trim();
if(cookieName === "rememberMe" && cookieValue === "sure"){
var rememberMeObj = document.getElementById("rememberMe");
rememberMeObj.checked = true;
} else if(cookieName === "userName") {
document.getElementById("userName").value = decodeURIComponent(cookieValue);
}
}
}
}
trim():此方法是去空格的(去空格很重要,有很多难找的问题就是 空格问题);
Cookie中的数据,如何传递到客户端?
答:服务器端创建的Cookie,会通过响应头 Set-Cookie,传递给客户端。
Cookie何时失效?
答:Cookie 有一个maxAge属性,该属性指定该Cookie的有效期,时间单位是秒。
maxAge默认是 -1, 表示关闭浏览器即失效。
Cookie中的数据,又是如何被带到服务器?
答:如果同一个会话中,以前的某一次请求,服务器给客户端响应了Cookie,
那么,该客户端后续对同一个WEB APP 的请求都会带上该Cookie的数据。具体来说,是通过请求头Cookie来
实现的。通过 Cookie 的 domain 和 path 属性确定当前请求是否需要带上这个Cookie。
Session
Seeion的获取:req.getSession().setAttribute("userName", userName);
**注意:**Cookie是需要自己设置回话记录时间(如:setMaxAge()设置存在时间)Session则是默认保持半小时,在这时间内来访问可以记录(比如登录之后,在利用网址便可以再次访问)
第一次访问服务器会自动生成一个Session发送给客户端,那Session是怎么带过去的呢?又不像Cookie那么在响应中带走;
答案便是Session也会利用Cookie带到客户端;响应头为Set-Cookie。
注意:只有第一次请求的时候响应才会带Session的ID;
第二次之后的请求客户端都会带Session;(Cookie是客户端回话保持技术,而Session是服务器回话保持技术;Cookie是包数据保存在客户端,Session是把数据保存在服务端。)
(**form表单有name属性的都提交)**readonly属性控制输入框无法编辑(isNaN()方法是判断是否为自然数)