• 作用域对象


    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) :当在请求作用域中替换一个属性值的时候调用

  • 相关阅读:
    【性能测试】二、TPS、QPS、RT和吞吐量这些都是什么?
    【性能测试】一、哪那么多概念,不就是这一条吗?
    【测试基础】九、如何做 API 测试?异步的呢?
    【测试基础】八、创建测试数据的时机
    【测试基础】七、你如何准备测试数据?
    【测试基础】六、做好测试计划需要注意这些
    【测试基础】五、这样提bug单,开发小哥还会怼你么?
    【测试基础】四、你的测试覆盖率是多少?
    【测试基础】三、为什么要做自动化测试?哪种项目合适?
    【测试基础】二、我好像真的不会设计“好的”测试用例
  • 原文地址:https://www.cnblogs.com/syl1104/p/3802297.html
Copyright © 2020-2023  润新知