• Servlet四大域对象


    pageContext
    pageContext作用域为page(页面执行期)。

     

    request
    request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域仅在当前请求中有效。

    用处:常用语服务器间同一请求不同页面之间的参数传递,常用语表单的控件值传递。

    方法:

    request.setAttribute();
    reuqest.getAttribute();
    request.removeAttribute();
    request.getParameter();
     

    session
    服务器会为每一个会话创建一个Session对象,所以Session中的数据可供当前会话中所有Servlet共享。

    用处:常用于web开发中的登录验证界面(当用户登陆成功后浏览器分配其中一个Session键值对)。

    方法:

    session.setAttribute();
    session.getAttribute();
    session.removeAttribute();
    获取Session对象:

    HttpSession session = request.getSession();
     

    Application(ServletContext上下文)
    作用范围:所有的用户都可以取得此信息,此信息在整个服务器端被保留。Application属性范围值只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象。

    方法:

    ServletContext application = this.getServletContext();
    application.setAttribute();
    application.getAttribute();
    application.removeAttribute();
     

    Servlet作用域
    例如,我们访问index.jsp的时候,分别对pageContext、request、session、application四个作用域进行累加。计算完成后就从index.jsp执行forward转发到test.jsp,在test.jsp里再进行一次累加,然后显示出这四个整数来。

    从结果来看:

    ①page里的变量没法从index.jsp传递到test.jsp,只要页面跳转了,它们就不见了。

    ②request里的变量可以跨越forward前后两页。但是只要刷新页面,它们就重新计算了。

    ③session和application的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这个页面,session里的变量就重新计算了。application里的变量一直在累加,除非你重启Tomcat,否则它会一直变大。 

     

    作用域规定的是变量的有效期限

    ①如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前JSP页面里。从把变量放到pageContext开始,知道JSP页面跳转都可以使用。

    ②如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期:就是从Http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个JSP页面,在这些页面里,你都可以使用这个变量。

    ③如果把这个变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话:就是指从用户打开浏览器开始,知道用户关闭浏览器这中间的过程,这个过程可能包含多个请求响应。也就是说,只要用户不关闭浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话,而放到会话中的变量,就可以在当前会话的所有请求里使用。

    ④如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。所谓整个应用:是指从应用启动到应用结束。application里的变量存活时间最长,如果不进行手动删除,它们就一直可以使用。 
     

  • 相关阅读:
    Go 指针
    Go 字符串
    Go Maps
    Go 可变参数函数
    Go 数组和切片
    pyqt5实现窗口跳转并关闭上一个窗口
    spy++查找窗口句柄
    Python中Tk模块简单窗口设计
    pyqt5无边框拖动
    pyqt5 GUI教程
  • 原文地址:https://www.cnblogs.com/fgy11/p/13288178.html
Copyright © 2020-2023  润新知