Cookie&Session

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;">密&nbsp;码:</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="登录" />&nbsp;&nbsp;<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()方法是判断是否为自然数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值