JSP中的pageContext隐式对象和EL表达式中的pageContext隐式对象的比较

    JSP隐式对象和EL表达式的隐式对象中都同时存在pageContext,
    那他们之间的联系是什么?

    JSP中的pageContext是javax.servlet.jsp.PageContext类的对象,
    可以调用javax.servlet.jsp.PageContext类中的方法

    而在EL表达式中,pageContext对象代表的是JSP中的pageContext,
    它也可以调用avax.servlet.jsp.PageContext类中的某些方法

    上面的说法是否是正确的?
阅读 3.7k
2 个回答
    <% 
        out.write(pageContext.toString()+"<br>");
    out.write(pageContext.getClass().toString());
    %>
    <hr>
    ${pageContext}
    <br>
    ${pageContext.getClass().toString()}

新建一个jsp页面将这个几行代码复制到里面就可以看到啦
我运行出来的结果是:

org.apache.jasper.runtime.PageContextImpl@425c70ca
class org.apache.jasper.runtime.PageContextImpl
org.apache.jasper.runtime.PageContextImpl@425c70ca 
class org.apache.jasper.runtime.PageContextImpl 

根据结果分析,
EL表达式和在使用代码将隐式的对象取出来的对象的hash值是一样的,可以证明这两个对象一致。
通过EL表达式以及通过代码方式取值都可以运行该对象的方法,说明是正确的。

下面是EL隐式对象的描述(孙卫琴-Tomcat与Java Web开发技术详解(第二版))
从中可以看到EL表达式中的pageContext表示javax.servlet.jsp.PageContext对象 ,
而在JSP的隐式对象中,pageContext表示的也是javax.servlet.jsp.PageContext对象
EL语言定义了11个隐式对象,它们都是java.util.Map类型,网页制作者可通过它们来便捷地访问web应用中的特定数据.图12-1对这11个隐式对象作了说明.

    隐式对象的固定变量名              类型                      说明    
      application                      java.util.Map                 把web应用范围内的属性名和属性值进行映射
      cookie                        java.util.Map                 把客户请求中的Cookie名和Cookie对象进行映射
      header                        java.util.Map                 把HTTP请求头部的项目名和项目值进行映射,例如:${header.host}等价于<%=request.getHeader("host")%>
      headerValues                  java.util.Map                 把HTTP请求头部的项目名和所有匹配的项目值的数组进行映射,例如:${headerValues["accept-language"]}等价于<%=request.getHeaders("accept-language")%>
      initParam                     java.util.Map                 把web应用的初始化参数名和参数值进行映射    

      pageContext                   java.util.Map                 表示javax.servlet.jsp.PageContext对象 
      pageScope                     java.util.Map                 把页面范围内的属性名和属性值进行映射    
      param                         java.util.Map                 把客户请求中的请求参数名和参数值进行映射
      paramValues                   java.util.Map                 把客户请求中的请求参数名和所有匹配的参数值数组进行映射,例如:${paramValues.username}等价于<%=request.getParameters("username")%>
      requestScope                  java.util.Map                 把请求范围内的属性名和属性值进行映射
      sessionScope                  java.util.Map                 把会话范围内的属性名和属性值进行映射
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题