zoukankan      html  css  js  c++  java
  • JSP内置对象和EL内置对象

    JSP共有九大内置对象:

    (1) HttpSession类的session对象
    作用:主要用于来分别保存每个用户信息,与请求关联的会话;
             会话状态维持是Web应用开发者必须面对的问题。

    (2) HttpServletRequest类的request对象
    作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。

    (3) HttpServletResponse类的respone对象
    作用:代表响应对象,主要用于向客户端发送数据

    (4) JspWriter类的out对象
    作用:主要用于向客户端输出数据
            Out的基类是JspWriter

    (5) ServletContex类的application对象
    作用:主要用于保存用户信息,代码片段的运行环境;
            它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.

    (6) PageContext类的pageContext对象
    作用:管理网页属性,JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。

    (7) ServletConfig类的config对象
    作用:代码片段配置对象,表示Servlet的配置。

    (8) Object类的page(相当于this)对象
    作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。

    (9)Exception
    作用:处理JSP文件执行时发生的错误和异常

    EL共有11大内置对象:

     

    JSP开发人员可以在EL表达式中使用EL隐式对象,而无须任何显式的编码活声明。隐式对象就是设计用来为 JSP 编程提供方便的,通过隐式对象,用EL编写的代码就可以直接使用JSP页面的一些最常用的地方。总共有11个隐式对象,这11个隐式对象可以分为5大类:
      *JSP隐式对象。
      *作用域访问隐式对象。
      *参数访问隐式对象。
      *首部访问隐式对象。
      *初始化参数访问隐式对象。
             JSP隐式对象类中只有一个EL隐式对象,这就是pageContext隐式对象。这与同名的JSP隐式对象实际上就是同一个对象。余下的EL隐式对象都是Java映射(map),他们只是提供了更容易的途径来访问pageContext隐式对象的某些性质。
         共有4个作用域隐式对象,分别为pageScope, requestScope, sessionScope和applicationScope. 这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。例如:附加到request作用域的username属性可以通过EL表达式${ requestScope.username}来直接访问。
         有两个参数访问隐式对象,可以用来访问HTTP请求参数(表单提交参数),即param和paramValues. param 是一个用于访问单值参数的映射, paramValues则可用于访问可能包含多个值的参数。接下来的实验会展示这将如何处理。
        有3个首部访问隐式对象,可以用于访问HTTP首部,分别是header, headerValues和cookie。如果想以原始的方式访问HTTP首部或cookie, 这些映射就很有用。
        另外还有一个初始化参数访问隐式对象:initParm。这个映射可以用于访问初始化参数的值,初始化参数的值一般都在web.xml中设置。

    类别
    标识符
    描述
    JSP
    pageContext
    PageContext 实例对应于当前页面的处理
    作用域
    pageScope
    与页面作用域属性的名称和值相关联的 Map 类
    requestScope
    与请求作用域属性的名称和值相关联的 Map 类
    sessionScope
    与会话作用域属性的名称和值相关联的 Map 类
    applicationScope
    与应用程序作用域属性的名称和值相关联的 Map 类
    请求参数
    param
    按名称存储请求参数的主要值的 Map 类
    paramValues
    将请求参数的所有值作为 String 数组存储的 Map 类
    请求头
    header
    按名称存储请求头主要值的 Map 类
    headerValues
    将请求头的所有值作为 String 数组存储的 Map 类
    Cookie
    cookie
    按名称存储请求附带的 cookie 的 Map 类
    初始化参数
    initParam
    按名称存储 Web 应用程序上下文初始化参数的 Map 类

    其实我的主要目的是为了搞清楚pageContext对象,如下:

    Jsp中pageContext的作用
    pageContext 隐含物件对应於javax.servlet.jsp.PageContext型态之物件,,隐含物件都自动的被加入至pageContext中,您可以藉由它来取得与JSP相关的隐含物件对应之Servlet物件,像是getRequest()可以取得ServletRequest, getServletConfig()可以取得ServletConfig,getSession()可以取得HttpSession等等。提供取得隐含物件对应之Servlet物件并不是pageContext的主要作用,它的主要功能在提供一个单一个介面,以管理各种的公开物件(像是HttpSession、ServletContext、ServletConfig、ServletRequest、ServletResponse等等),提供一个单一的API来管理属性作用范围等等。 
    我们之前曾经使用过session的setAttribute()等方法设定一个进程可以共用的属性物件,使用session设定的属性在同一个进程中可以共用,除了session之外,还有pageContext、 request、application也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共用的属性物件,只不过这四个物件所设定的属性其共用范围各不相同。 
    使用pageContext所设定的属性物件,其共用范围限於同一个 JSP页面,使用request所设定的属性物件,其在同一个request处理期间可以共用(包括forward给其它JSP页面),session物件所设定的属性物件则限於同一个进程作用期间可以共用,而application物件所设定的属性,则在整个Web应用程式中的JSP页面都可以共用。 

    以下举application为例,您可以将一些物件当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性物件,例如: 

    <% 
    String attr = "字串物件"; 
    out.println("设定属性给application:" + attr); 
    application.setAttribute("str", attr); 
    %> 



    我们先连上这个JSP网页以执行属性设定,然后我们再连上这个JSP网页: 

    <% 
    String attr = (String) application.getAttribute("str"); 
    out.println("取得application属性:" + attr); 
    %> 




    由於我们之前已经将字串物件设定在application中作为属性,所以我们可以在上面这个页面中取得之前设定的物件,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等物件,只要在允许的作用范围中,就可以取得所设定的属性物件。 

    您可以使用pageContext物件来设定属性,并指定属性的作用范围,而不用使用个别的pageContext、request、session、 application来进行设定,这就是之前所提的,以pageContext提供一个单一的API来管理属性作用范围,您可以使用以下的方法来进行设定: 

    getAttribute(String name, int scope) 
    setAttribute(String name, Object value, int scope) 
    removeAttribute(String name, int scope) 



    其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、pageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,我们可以将上面的两个JSP页面改为以下的形式: 

    <% 
    String attr = "字串物件"; 
    out.println("设定属性给application:" + attr); 
    pageContext.setAttribute("str", attr, pageContext.APPLICATION_SCOPE); 
    %> 



    <% 
    String attr = (String) pageContext.getAttribute("str", pageContext.APPLICATION_SCOPE); 
    out.println("取得application属性:" + attr); 
    %>
  • 相关阅读:
    Codeforces Round #361 (Div. 2) E. Mike and Geometry Problem 离散化+逆元
    bzoj 1270: [BeijingWc2008]雷涛的小猫 简单dp+滚动数组
    codevs 1540 银河英雄传说 并查集
    tyvj 1027 木瓜地 简单模拟
    Codeforces Round #341 (Div. 2) C. Mike and Chocolate Thieves 二分
    UVA 10574
    BZOJ 1296: [SCOI2009]粉刷匠 分组DP
    Good Bye 2015 C. New Year and Domino 二维前缀
    Good Bye 2015 B. New Year and Old Property 计数问题
    Good Bye 2015 A. New Year and Days 签到
  • 原文地址:https://www.cnblogs.com/sharpel/p/5870114.html
Copyright © 2011-2022 走看看