**session and cookie

1. 概念和原理

  • Cookie: 

 

 

  • Session:

 

 

2. 用法举例说明

2.1 cookie应用:面试题: 如何保存用户的登陆状态呢?





 

 

 

2.2 session应用:

2.2.1 session 实现购物车





 

 

2.2.2 session 实现防止表单重复提交




 

 

2.3 session和cookie的区别

Cookie:

Cookie是存储在客户端的一个文本文件,通常不超过4K;
Cookie有2种声明类型,一种是无存活周期的(存活仅限于浏览器进程),一种是有存活周期的(当存活周期到期,该Cookie失效);
当客户端禁用Cookie或删除Cookie,Cookie失效,通常Cookie被认为是不可靠的。
Session:

Session是分配在服务器端的一块内存区域,当任意一个客户端提出请求时,服务器端会生产一个Session对象,并把Session中的一个属性SessionID发回给客户端,并写入客户端Cookie(该Cookie仅存活于浏览器进程);
Session有2种实现形式,一种是依赖于Cookie,一种是靠URL重写;
服务器端每一个Session对应一个客户端(依据SessionID),在客户端初次访问时创建,Session超时或关闭浏览器进程,Session失效。
注:如客户端禁用Cookie,则Session必须依赖于URL重写才能实现。

在JAVA中Cookie和Session的实现方法(具体参照Servlet Api):

Cookie cookie = new Cookie(String name, String value); //创建Cookie对象
cookie.setMaxAge(int expiry); //设置到期时间,单位:s
response.addCookie(Cookie cookie); //把Cookie写入到客户端。

HttpSession session = request.getSession(true); //判断客户端是否第一次访问(客户端Cookie中是否含有访问当前web程序的SessionId),如果不是,即得到该Session对象,如果是,则创建新的Session对象(参数设为true)。
session.setAttribute(String name, Object value); //设置Session属性,name指定参数名,value为参数值,该值须为一个对象。
String str = (String)session.getAttribute(String name); //通过参数名,得到参数值,并作相应转换。

 

 

 

 

 

 

其他参考http://blog.sina.com.cn/s/blog_610a21f10100eq9g.html

一:Cookie&&Session

1. WEB应用中的会话是指一个客户端浏览器与WEB服务器之间连续发生的一系列请求和响应过程

2. 在 Servlet 规范中,常用以下两种机制完成会话跟踪:Cookie和Session

3. Cookie的使用实例:

Cookie对象的产生:

Cookie cookie = new Cookie("Cookiename","Cookiue"); 

cookie.setMaxAge(60); 

response.addCookie(cookie); 
 

Cookie对象的获取:

Cookie[] cookies = request.getCookies(); 

if(cookies != null) 

for(Cookie cookie:cookies){ 

out.print(cookie.getName()+","+cookie.getValue()); 

} 
 
4. Cookie机制采用的是在客户端保持 HTTP 状态信息的方案;session机制采用的是在服务器端保持 HTTP 状态信息的方案

5. Cookie有效的路径:只对当前目录及其子目录有效,对父目录无效,可以调用Cookie对象的setPath()方法设置Cookie的有效路径例:cookie.setPath(/)

6. page指令中的session=false:当前页面的session对象不可用!但并不意味着当前页面不可以使用HttpSession对象,可以通过其他方法获取Session对象来使用;不是只要访问JSP页面或web应用,Session就会被创建,而是只有当Server端程序调用HttpServletRequest.getSession(true)这样的语句时才会被创建;关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效

7. 设置Session的有效时间的两种方法:A:session.setMaxInactiveInterval() (单位为秒)

B: <session-config>

<session-timeout>20</session-timeout>

</session-config>

8. 保存session id的两种方式

A: 保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器

B: 由于cookie可以被人为的禁用,必须有其它的机制以便在cookie被禁用时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值