• JSP教程:1天玩转JSP网站开发技术
  • JSP是什么?
  • JSP的特点与工作流程
  • JSP与ASP、PHP的比较
  • JSP页面的组成及其元素
  • JSP开发环境搭建(Tomcat的安装和配置)
  • 第一个JSP程序
  • JSP注释(多种注释详解)
  • JSP声明:变量、方法和类的声明
  • JSP中嵌入Java代码
  • JSP表达式
  • JSP开发模式(四种模式)
  • JSP常见错误以及解决方案
  • JSP指令详解(三大指令)
  • JSP page指令
  • JSP include指令
  • JSP指令应用实例
  • JSP动作
  • JSP include动作
  • JSP param动作
  • JSP forward动作
  • JSP plugin动作
  • JSP useBean动作
  • JSP setProperty动作
  • JSP getProperty动作
  • JSP application 对象
  • JSP out对象:向客户端输出数据
  • JSP request对象:获取客户端的请求信息
  • JSP response对象:响应客户端的请求并向客户端输出信息
  • JSP session对象
  • JSP pageContext对象
  • JSP page对象
  • JSP config对象
  • JSP获取并显示字符串长度
  • 什么是JavaBean?
  • JavaBean工具
  • JavaBean规范
  • JavaBean的属性(Simple、Indexed、Bound、Constrained)
  • JavaBean的Scope属性
  • JavaBean事件
  • JavaBean实现用户登录界面
  • Servlet是什么?
  • Servlet的生命周期
  • Servlet的类和方法
  • Servlet客户端跳转
  • EL是什么?(详解)
  • JSP EL表达式的基本语法及运算符的优先级(一览表)
  • JSP EL 点(.)运算符和下标([])运算符
  • JSP EL算数运算符
  • JSP EL关系运算符
  • JSP EL逻辑运算符
  • JSP EL条件运算符
  • JSP EL empty空运算符
  • EL表达式中的常量与变量
  • EL表达式的保留字
  • EL表达式的内置对象及其作用域
  • 使用EL表达式访问JavaBean
  • 使用EL表达式访问集合
  • EL表达式内置对象param和paramValues
  • EL表达式内置对象cookie
  • EL表达式内置对象initParam
  • JDBC 的定义及产品组件
  • 建立JDBC连接
  • 利用JDBC发送SQL语句
  • JDBC API ResultSet接口(记录集接口)
  • JDBC RowSet接口
  • JDBC BaseRowSet类和CachedRowSet类
  • 填充CachedRowSet对象记录集(三种方法)
  • File类(在JSP中的使用)详解
  • 使用字节流读/写文件
  • RandomAccessFile类
  • JSP文件上传
  • XML是什么?
  • XML的基本语法
  • JDK 中的 XML API
  • DOM解析XML
  • SAX解析XML
  • DOM4j解析XML
  • JSP 的内置对象还包括 pageContext、page、config,在接下来的教程中我们将介绍这些内置对象的语法与应用。

    pageContext 是页面上下文对象,这个特殊的对象提供了 JSP 程序执行时所需要用到的所有属性和方法,如 session、application、config、out 等对象的属性,也就是说,它可以访问本页所有的 session,也可以取本页所在的 application 的某一属性值,它相当于页面中所有其他对象功能的集大成者,可以用它访问本页中所有的其他对象。

    pageContext 对象是 javax.servlet:jsp.pageContext 类的一个实例,它的创建和初始化都是由容器来完成的,JSP 页面里可以直接使用 pageContext 对象的句柄,pageContext 对象的 getXxx()、setXxx() 和 findXxx() 方法可以根据不同的对象范围实现对这些对象的管理。表 1 列出了 pageContext 对象的常用方法。

    方法 说明
    void forward(String relativeUrlPath) 把页面转发到另一个页面或者 Servlet 组件上
    Exception getException() 返回当前页的 Exception 对象
    ServletRequest getRequest() 返回当前页的 request 对象
    ServletResponse getResponse() 返回当前页的 response 对象
    ServletConfig getServletConfig() 返回当前页的 ServletConfig 对象
    HttpSession getSession() 返回当前页的 session 对象
    Object getPage() 返回当前页的 page 对象
    ServletContext getServletContext() 返回当前页的 application 对象
    public Object getAttribute(String name) 获取属性值
    Object getAttribute(String name,int scope) 在指定的范围内获取属性值
    void setAttribute(String name,Object attribute) 设置属性及属性值
    void setAttribute(String name,Object obj,int scope) 在指定范围内设置属性及属性值
    void removeAttribute(String name) 删除某属性
    void removeAttribute(String name,int scope) 在指定范围内删除某属性
    void invalidate() 返回 servletContext 对象,全部销毁

    pageContext 对象的主要作用是提供一个单一界面,以管理各种公开对象(如 session、application、config、request、response 等),提供一个单一的 API 来管理对象和属性。

    【例1】通过 pageContext 对象取得不同范围的属性值,代码如下:

    1. <%@ page contentType="text/html;charset=utf-8" %>
    2. <html>
    3. <head>
    4. <title>
    5. pageContext 对象获取不同范围属性
    6. </title>
    7. </head>
    8. <body>
    9. <%
    10. request.setAttribute("info","value of request scope");
    11. session.setAttribute("info","value of request scope");
    12. application.setAttribute("info","value of application scope");
    13. %>
    14. 利用 pageContext 取出以下范围内各值(方法一):<br>
    15. request 设定的值:<%=pageContext.getRequest().getAttribute("info") %> <br>
    16. session 设定的值:<%=pageContext.getSession().getAttribute("info") %> <br>
    17. application 设的值:<%=pageContext.getServletContext().getAttribute("info") %> <hr>
    18. 利用pageContext取出以下范围内各值(方法二):<br>
    19. 范围1(page)内的值:<%=pageContext.getAttribute("info",1) %> <br>
    20. 范围2(request)内的值:<%=pageContext.getAttribute("info",2) %> <br>
    21. 范围3(session)内的值:<%=pageContext.getAttribute("info",3) %> <br>
    22. 范围4(application)内的值:<%=pageContext.getAttribute("info",4) %> <hr>
    23. 利用 pageContext 修改或删除某个范围内的值:
    24. <% pageContext.setAttribute("info","value of request scope is modified by pageContext",2); %> <br>
    25. 修改 request 设定的值:<br>
    26. <%=pageContext.getRequest().getAttribute("info") %> <br>
    27. <% pageContext.removeAttribute("info"); %>
    28. 删除 session 设定的值:<%=session.getAttribute("info") %>
    29. </body>
    30. </html>

    运行结果如图 1 所示。

    通过pageContext对象取得不同范围的属性值
    图1 通过pageContext对象取得不同范围的属性值

    提示:

    pageContext 对象在实际 JSP 开发过程中很少使用,因为 request 和 response 等对象可以直接调用方法进行使用,而通过 pageContext 来调用其他对象,会觉得有些麻烦。