浅入cookie与session

会话概念:
指的是用户打开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,
访问多少资源,直到用户关闭浏览器,整个过程称为一次会话。
1、Cookie
可以用来记录多个请求之间的联系,保存服务器的状态
2、Cookie的使用
如何创建一个cookie(在服务器端创建)
Cookie c=new Cookie(String name,String val);
如何将一个cookie添加到客户端
response.addCookie(c);
setMaxAge(正数),及多少秒后该cookie会失效
setMaxAge(0),删除该cookie
3、cookie的细节
一个浏览器存放的cookie数量是有限的,并且一个cookie大小限制在4k内
4、cookie的存取
存:String val=URLEncoder.encode("我是名字","utf-8");//中文问题的处理
Cookie cookie=new Cookie("name",val);
取:String val=URLDecoder.decode(cookie.getValue(),"utf-8");
out.println("name="+val);
5、session
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分
配一个空间,该空间被这个浏览器独占。这个空间就是session空间,该空间中的
数据默认存在时间为30min,该值也可以修改。
6、session的创建与使用
创建
HttpSession session = request.getSession(); 
得到session
request.getSession(true);
向session添加属性
session.setAttribute(String name,Object val);
从session得到某个属性
String name=session.getAttribute(String name);
从session中删除某个属性
session.removeAttribute(String name);
7、Session实现原理
1)当客户向服务器发送第一次请求; 
2)服务器会创建一个HttpSession对象,该对象代表一次会话; 
3)同时生产HttpSession对象对应的Cookie对象,并且Cookie对象的name是JSESSIONID,Cookie的value是32位长度的字符串; 
4)服务器将Cookie的value和HttpSession对象绑定到session列表中(Cookie的value作为session列表中的key属性值;HttpSession对象作为session列表中的value属性值。); 
5)服务器将Cookie完整发送给浏览器客户端; 
6)浏览器客户端将Cookie保存到缓存中; 
7)只要浏览器不关闭,Cookie就不会消失; 
8)当再次发送请求的时候,会自动提交缓存中的Cookie; 
9)服务器接收到Cookie,验证该Cookie的name确实是:JSESSIONID,然后获取该Cookie的value; 
10)通过Cookie的value去session列表中检索key对应的value即HttpSession对象。

8、重定向请求
请求转发:
 request.getRequestDispatcher("目录路径").forward(request,response);
 
请求重定向:
 response.sendRedirect("目录路径");
 
区别:
    1) 请求转发时,地址栏不会改变(是第一个servlet的地址)
       重定向,地址栏会发生变化(是最后一个servlet的地址)
    2) 请求转发时一次请求,跳转发生在服务器内部
       重定向是两次请求,第一次请求会返回302的状态码和目标地址,
          浏览器根据目标地址发送第二次请求,才完成整个流程
    3) 重定向是两次请求,所以不能利用request作用域存值取值
       但可以使用session作用域来存值取值       
       请求转发因为是同一次请求,所以可以使用request作用域存值取值
    4) 请求转发的目标只能是本项目的servlet或jsp
       重定向跳转的目标可以是任意的

查询          
servlet  -->  jsp   // 关系密切的跳转使用请求转发 forward()
删除
删除servlet --> 查询列表servlet  // 关系不密切的跳转使用重定向 redirect()


select ... from ... limit n;  // 每次最多查询n条记录
select ... from ... limit m, n; // 从m开始(m从0开始),每次最多查询n条记录

每页10条记录
1 页   limit 0, 10;
2 页   limit 10, 10;
3 页   limit 20, 10;
...
page(页号), size(每页记录数)

m=(page-1)*size
n=size

9、Cookie与Session的对比:
Session是在服务器端保存用户信息。 Cookie是在客户端保存信息。
session中保存的是对象,Cookie保存的是字符串。
session随会话结束而关闭,Cookie可以长期保存在客户端。
Cookie通常用于保存不重要的用户信息,重要的信息是由session保存。
Session是内置对象,Cookie不是内置对象。
Session可以直接在JSP页面使用,Cookie需要new出来。
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
Cookie是以文明的方式放在客户端,安全性弱。
Session是存放在服务器内存中,所以安全性好。
Cookie为多个用户浏览器共享。
Session为一个用户浏览器独享
注意:因为Session会占用服务器的内存,因此不要向Session中存放过多过大的对象,会影响性能。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值