Web应用程序状态管理

Web应用程序状态管理

一、Web状态管理概述 :
    1、HTTP协议使用的是无状态的连接
    2、对容器而言,每一个请求都来自于一个新的客户

二、状态管理解决方案-隐藏字段:
    <input type=”hidden” name=”session” value=”...”>
        1:对用户在网站上的访问进行会话跟踪。
        2:为服务器端程序提供预定义的输入。
        3:存储动态产生的页面上下文信息。  
        
三、Cookie原理:
    1、服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端
        Cookie cookie = new Cookie("cool", "tiger!");
        response.addCookie(cookie);
        
四、在Serlvet中管理Cookies :
    Servlet中提供了如下一系列操作Cookie的API
        Cookie(name, value):构造方法用于创建一个或多个Cookie
        setMaxAge(int lifetime):设置Cookie的过期时间(以秒为单位)。默认值为负值(Cookie将在浏览器关闭时过期)
        getMaxAge():获取Cookie的过期时间。
        getName():获取Cookie的名字
        setValue(String value):指定Cookie的值。
        getValue():获取Cookie的值

五、在Servlet中使用Cookie:
    1、要将Cookie发送到客户端,Servlet应该按照下列的操作步骤执行:
            创建一个或多个Cookie,使用构造方法指定Cookie的名字和值
            使用setValue方法为Cookie设置属性值
            使用HttpServletResponse对象的addCookie()方法将Cookie插入到响应头中
    2、要读取客户端传入的Cookie,Servlet执行下列操作步骤:
            使用HttpServletRequest对象的getCookies方法返回一个Cookie对象数组
            Servlet遍历该数组(调用getName()方法),直到找到与名称相匹配的Cookie值
            
六、Session原理:
    1、服务器可以为客户端创建并维护一个Session对象,用于存放数据。
    2、在创建Session对象的同时,服务器将会为该 Session对象产生一个唯一编号,这个编号称之为SessionID
    3、服务器以Cookie的方式将SessionID存放在客户端。
    4、当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问
    

七、Session工作流程:

八、Session会话跟踪机制 :
    1、用户发送请求
        HttpSession session = request.getSession();
    2、服务器的响应如下
        HTTP/1.1 200 OK
        Server: Apache-Coyote/1.1
        Set-Cookie: JSESSIONID=3453597CE6EA6B4F948C09D67530F2C0; Path=/lovobook
        Content-Type: text/html;charset=utf-8
    3、再次发送请求
        Cookie: JSESSIONID=3453597CE6EA6B4F948C09D67530F2C0

九、HttpSessoin接口 :
    HttpSession接口常用的一些方法
        setAttribute(java.lang.String, java.lang.Object):在Session对象中用一个名字绑定一个对象。
        getAttribute(java.lang.String):通过名字获取Session对象中保存的对象。
        removeAttribute(java.lang.String):在Session中删除与一个名字对应的对象。
        getCreationTime():返回第一次创建会话的时间。
        getLastAccessedTime():返回容器最后一次得到该会话ID的请求时间。
        setMaxInactiveInterval(int?interval):对于会话指定客户请求的最大间隔时间,以秒为单位。-1表示永不过期
        getMaxInactiveInterval(int?interval):返回客户请求的最大间隔时间。
        invalidate():会话结束,当前存在在会话中的所有会话属性也会解除绑定。
        getId():此方法返回每个session唯一的标识
        
十、会话超时管理:
    1、销毁会话可以采用如下三种简单的方式
        设置会话超时。
        在Session对象上调用invalidate()方法。
        应用结束(崩溃或取消部署)
    2、在web.xml文件中配置
        …
        <session-config>
            <session-timeout>15</session-timeout>
        </session-config>
        …
        
十一、Application与Session域范围的属性比较 :
    1、在web应用上下文域范围和Session域范围中,都可以用一个名字来绑定一个对象,从而在域范围内进行访问
    2、绑定在Session范围内的对象仅仅在一个持续的会话期间被维护
    3、绑定在Application(应用上下文)中的对象,在整个Web应用程序运行过程中都被维护。
    
        都使用相同的方法:
            setAttribute()
            getAttribute()

十二、URL重写:
    1、Session对象的正常使用要依赖于Cookie
    2、URL地址重写能够取得置于Cookie中的会话,并把会话ID附加到访问应用的各个URL最后
    URL重写方法:
        response.encodeURL()
        response.encodeRedirectURL(“/lovobook/sucess.html” )
        注:URL重写是容器自动完成的,但需要我们对URL进行编码才有效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值