zoukankan      html  css  js  c++  java
  • 作用域对象

    Web应用程序状态管理:

    概述:

    1    HTTP协议使用的是无状态的连接

    2     对容器而言,每一个请求都来自于一个新的客户

    (1)表单隐藏字段:

    <input type=”hidden” name=”session” value=”...”>

    不足:只有当每个页面生成动态的时候才会有效;

    (2)Cookie:

        原理:服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端

        //获取请求信息中Cookie数据:

        Cookie [] Cookies= request.getCookies();

        //创建Cookie对象:

        Cookie cookie=new Cookie(“cool”,”tiger!”);

        //设置生命周期以秒为单位:

        cookie.MaxAge(20);

        //添加Cookie在响应头,发送给客户端

        response.addCookie(cookie);

    (3)Session会话跟踪:

    原理:

    1服务器可以为客户端创建并维护一个Session对象,用于存放数据。

    2在创建Session对象的同时,服务器将会为该 Session对象产生一个唯一编号,这个编号称之为SessionID

    3服务器以Cookie的方式将SessionID存放在客户端。

    4当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问

    *Session对象的正常使用要依赖于Cookie

        //获取HttpSession对象:

        HttpSession session=request.getSession;

        //设置session对象的最长不活动间隔

        Session.setMaxInactiveInterval(30);

        //获取session的数据

        List list =(list) session.getAttribute(“list”);

        //向session中添加数据

        Session.setAttribute(“list”.list);

        //让对象失效

        Session.Invalidate();

    销毁会话可以采用如下三种简单的方式

    –  设置会话超时。

    –  在Session对象上调用invalidate()方法。

    –  应用结束(崩溃或取消部署)

    浏览器关闭不意味着Session被删除。

    (4)URL重写:当用户禁用了Cookie,可以使用代替。

    URL重写方法:

    response.encodeURL()

    response.encodeRedirectURL(“/lovobook/sucess.html” )

    对象作用域与Servlet事件监听器:

        对象作用域

    作用域对象

    属性操作方法

    作用域范围说明

    ServletContext(上下文)

    void setAttribute(String, Object)

    Object getAttribute(Sting)

    void removeAttribute(String)

    Enumeration getAttributeNames()

    整个Web应用程序

    HttpSession(会话)

    一个会话交互过程

    ServletRequest(请求)

    一次请求过程

    1.ServletContext(上下文)

    设置在ServletContext对象中的属性可以被Web应用中的任何一部分来访问

    上下文作用域设置的属性在整个Web应用中被共享,只要服务器不被关闭,Web应用中的任何部分都能访问该属性,所以是线程不安全的。

    2.HttpSession(会话)

    Session用于维护与一个客户的会话状态。对于同一个客户的多个请求,Session会跨这些请求持久存储

    一般来说是安全的,但是存在多个线程访问相同的会话属性,所以线程也是不安全的,比如,同一个浏览器不同的标签。

    3. ServletRequest(请求)

    系统的资源消耗

    属性可以保存在请求作用域范围中

    请求结束后。对象就会被垃圾回收。

    监听器概述:

    1.监听session,request,application这三个对象里存取数据的变化

    2. 监听器对象可以在事情发生前、发生后可以做一些必要的处理

    3.Servlet监听器主要目的是给Web应用增加事件处理机制,以便更好地监视和控制Web应用的状态变化

    监听器分类:

    监听Web应用程序范围内的事件:

    Web应用启动和销毁事件

    Web应用程序的属性发生改变的事件(包括增加、删除、修改)。

    定义了ServletContextListener和ServletContextAttributeListener两个接口

    监听会话范围内的事件:

    管理从同一个客户端或用户向一个Web应用程序发出的一系列请求相关的状态或资源

    HttpSessionBindingListener接口 是唯一不需要在Web.xml中设定的Listener.

    HttpSessionAttributeListener接口

    HttpSessionListener接口

    HttpSessionActivationListener接口

    监听请求生命周期内事件:

    请求作用域范围内的生命周期事件用于管理整个request生命周期的状态和资源

    ServletRequestListener接口

    –  public void requestDestroyed(ServletRequestEvent sre):当请求被销毁时被处理。

    –  public void requestInitialized(ServletRequestEvent sre):当请求被创建时被处理

    ServletRequestAttributeListener接口

    –  public void attributeAdded(ServletRequestAttributeEvent arg0) :当在请求作用域中添加一个属性的时候调用该方法。

    –  public void attributeRemoved(ServletRequestAttributeEvent arg0) :当在请求作用域中删除一个属性时调用

    –  public void attributeReplaced(ServletRequestAttributeEvent arg0) :当在请求作用域中替换一个属性值的时候调用

  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/syl1104/p/3802297.html
Copyright © 2011-2022 走看看