Servlet和sql知识总结(高级篇)

一. 为什么需要状态管理

 -Web应用程序使用Http协议通信,而Http协议是"无状态"协议,即服务器一旦响应完客户的请求之后,就断开连接,而同一个客户的下一次请求将重新建立网络连接.
 -服务器应用程序有时是需要判断是否为同一个客户发出的请求,比如客户的多次选购商品.因此,有必要跟踪同一个客户发出的一系列请求.

二. 状态管理

--将客户端(浏览器)与服务器之间多次交互(一次请求,一次响应)当作一个整体看待,并且将多次交互所涉及的数据即状态保存下来.
--状态指的就是数据.
--管理指的多次交互时对数据的修改.
--常见模式:1.客户端状态管理技术:Cookie技术,保存在客户端
        2.服务器状态管理技术:Session技术,保存在服务器端

三.Cookie

  1. 创建cookie:
    Cookie c1=new Cookie(“uname”,”Kitty”);
  2. 添加cookie到response
    response.addCookie(c1);
  3. 获取cookie
    Cookie[] cookies=request.getCookies();
    if(cookies!=null){
    for(Cookie c:cookies){
    String name=c.getName();
    String value=c.getValue();
    out.println(name+”“+value)
    }
    }else{out.println(“无cookie信息”)}
  4. Cookie的保存时间
    使用setMaxAge方法设置,单位是秒
    seconds>0:保存在硬盘上的时间
    seconds=0:立即删除
    seconds<0:默认,保存在浏览器的内存中

四 Session

  1. 什么是Session(会话)
    -浏览器访问Web服务器时,服务器会为每一个浏览器在服务器端的内存中分配空间,单独创建一个Session对象,该对象有一个Id属性,其值唯一,一般称之为SessionId,并且服务器会将这个SessionId(使用Cookie的方式)发送给浏览器,浏览器再次访问服务器时,会将SessionId发送给服务器,服务器可以依据SessionId找到对应Session对象.

  2. 获得Session
    HttpSession s=request.getSession(boolean true)
    -HttpSession是个接口,后面返回的是符合接口规范的对象
    -当flag为true时,不管有没有SessionId,一定能得到一个Session对象(没有会创建)
    -当flag为false时,没有返回null;找到则返回

  3. 使用Session绑定对象
    绑定对象:
    void Session.setAttribute(String name,Object obj)
    获取绑定对象:
    Object Session.getAttribute(String name);
    解除绑定对象:
    void Session.removeAttribute(String name);
  4. Session验证
    -用户访问需要保护的资源时,可以使用Session验证的方法来保证其安全性,比如要求登录才能访问的资源
    -实现Session验证,遵循以下步骤
    -1.使用Session.setAttribute()绑定数据
    -2.使用Session.getAttribute()方式读取绑定值,如果没有,跳转到登录页面

  5. Session的优缺点
    a.优点:
    -安全(将状态保存在服务器端)
    -Session能够保存的数据类型更丰富,Cookie只能保存字符串
    -Session能够保存更多数据,Cookie大约保存4k
    b.缺点:
    -Session将状态保存在服务器端,占用服务器资源,如果用户量过大,会影响服务器性能.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值