Java-浅谈JSP内置对象

内置对象,何为内置对象?先来回顾下用户基于Servlet请求的一个处理过程:


请求-->调用Servlet-->响应JSP-->翻译JSP成_JSPServlet-->生成静态HTML代码-->浏览器解析生成页面

JSP引擎负责将JSP转化成Servlet,Servlet负责处理用户的动态请求,利用内置对象out(JSPWriter的实例)响应出静态的HTML代码。内置对象正是在生成Servlet时初始化的,同事JSP的设计者为了方便开发使用,可

直接在JSP页面使用。<%%><%=%><%!%>这三种方式包含的块,直接使用内置对象获得九大对象的引用。

以下为简单JSP的翻译生成的Servlet,文件名为_jsp.java

  1 /*
  2  * Generated by the Jasper component of Apache Tomcat
  3  * Version: Apache Tomcat/7.0.63
  4  * Generated at: 2016-05-18 02:24:09 UTC
  5  * Note: The last modified time of this file was set to
  6  *       the last modified time of the source file after
  7  *       generation to assist with modification tracking.
  8  */
  9 package org.apache.jsp.WEB_002dINF.jsp;
 10
 11 import javax.servlet.*;
 12 import javax.servlet.http.*;
 13 import javax.servlet.jsp.*;
 14
 15 public final class userList_jsp extends org.apache.jasper.runtime.HttpJspBase
 16     implements org.apache.jasper.runtime.JspSourceDependent {
 17
 18
 19
 20
 21   private static final javax.servlet.jsp.JspFactory _jspxFactory =
 22           javax.servlet.jsp.JspFactory.getDefaultFactory();
 23
 24   private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
 25
 26   private javax.el.ExpressionFactory _el_expressionfactory;
 27   private org.apache.tomcat.InstanceManager _jsp_instancemanager;
 28
 29   public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
 30     return _jspx_dependants;
 31   }
 32
 33   public void _jspInit() {
 34     _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
 35     _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
 36   }
 37
 38   public void _jspDestroy() {
 39   }
 40
 41   public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
 42         throws java.io.IOException, javax.servlet.ServletException {
 43
 44     final javax.servlet.jsp.PageContext pageContext;
 45     javax.servlet.http.HttpSession session = null;
 46     final javax.servlet.ServletContext application;
 47     final javax.servlet.ServletConfig config;
 48     javax.servlet.jsp.JspWriter out = null;
 49     final java.lang.Object page = this;
 50     javax.servlet.jsp.JspWriter _jspx_out = null;
 51     javax.servlet.jsp.PageContext _jspx_page_context = null;
 52
 53
 54     try {
 55       response.setContentType("text/html; charset=utf-8");
 56       pageContext = _jspxFactory.getPageContext(this, request, response,
 57                   null, true, 8192, true);
 58       _jspx_page_context = pageContext;
 59       application = pageContext.getServletContext();
 60       config = pageContext.getServletConfig();
 61       session = pageContext.getSession();
 62       out = pageContext.getOut();
 63       _jspx_out = out;
 64
 65       out.write("\r\n");
 66       out.write("\r\n");
 67       out.write("\r\n");
 68
 69     String path = request.getContextPath();
 70     String basePath = request.getScheme() + "://"
 71             + request.getServerName() + ":" + request.getServerPort()
 72             + path + "/";
 73     pageContext.getAttributesScope("aa");
 74     out.print(pageContext.getAttributesScope("aa"));
 75
 76       out.write("\r\n");
 77       out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
 78       out.write("<html>\r\n");
 79       out.write("<head>\r\n");
 80       out.write("<base href=\"");
 81       out.print(basePath);
 82       out.write("\">\r\n");
 83       out.write("<meta charset=\"UTF-8\">\r\n");
 84       out.write("<title>权限管理</title>\r\n");
 85       out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"css/user.manager.css\">\r\n");
 86       out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"themes/ui.jqgrid.css\">\r\n");
 87       out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"themes/redmond/jquery-ui-1.7.1.custom.css\">\r\n");
 88       out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"themes/ui.jqgrid.css\">\r\n");
 89       out.write("<script type=\"text/javascript\" src=\"js/jquery-1.8.2.min.js\"></script>\r\n");
 90       out.write("\r\n");
 91       out.write("\r\n");
 92       out.write("</head>\r\n");
 93       out.write("<body>\r\n");
 94       out.write("<div class=\"ston_container\">\r\n");
 95       out.write("\t<form action=\"\"  class=\"ston_form_box\" method=\"post\">\r\n");
 96       out.write("\t\t<h1>用户权限管理</h1>\r\n");
 97       out.write("\t\t<div class=\"ston_serch\">\r\n");
 98       out.write("\t\t\t<input type=\"text\" name=\"userName\" id=\"userName\" placeholder=\"请输入用户名\">\r\n");
 99       out.write("\t\t\t<div class=\"ston_search ston_button\" data-value=\"search\"><a href=\"javascript:void(0)\" onclick=\"gridReload()\"><img src=\"images/search.png\" width=\"100%\" /></a></div>\r\n");
100       out.write("\t\t</div>\r\n");
101       out.write("\t\t");
102       out.write("\r\n");
103       out.write("\t\t<div class=\"jqGrid_wrapper\">\r\n");
104       out.write("           \t<table id=\"jqGrid\"></table>\r\n");
105       out.write("            <div id=\"pager\"></div>\r\n");
106       out.write("          </div>\r\n");
107       out.write("\t</form>\r\n");
108       out.write("</div>\r\n");
109       out.write("\r\n");
110       out.write("<div class=\"ston_hidbox ston_userList\">\r\n");
111       out.write("\t<div class=\"ston_close\">\r\n");
112       out.write("\t\t<a href=\"javascript:void(0)\"><img src=\"images/tanc_03.png\" width=\"100%\" /></a>\r\n");
113       out.write("\t</div>\r\n");
114       out.write("\t<h3 class=\"ston_box_title\">权限编辑</h3>\r\n");
115       out.write("\t<div class=\"ston_manbox\">\r\n");
116       out.write("\t\t<form id=\"manageControl\" action=\"\" method=\"get\">\r\n");
117       out.write("\t\t\t<div class=\"manageControl_list\">\r\n");
118       out.write("\t\t\t</div>\r\n");
119       out.write("\t\t\t\r\n");
120       out.write("\t</form>\r\n");
121       out.write("\t</div>\r\n");
122       out.write("\t<div class=\"ston_btn_box\">\r\n");
123       out.write("\t\t<a href=\"javascript:void(0)\" class=\"ston_btn ston_alter\">确定</a>\r\n");
124       out.write("\t\t<a href=\"javascript:void(0)\" class=\"ston_btn ston_cancel\">取消</a>\r\n");
125       out.write("\t</div>\r\n");
126       out.write("\r\n");
127       out.write("</div>\r\n");
128       out.write("\r\n");
129       out.write("\r\n");
130       out.write("<script type=\"text/javascript\" src=\"js/i18n/grid.locale-bg.js\"></script>\r\n");
131       out.write("<script type=\"text/javascript\" src=\"js/i18n/grid.locale-en.js\"></script>\r\n");
132       out.write("<script type=\"text/javascript\" src=\"js/jquery-ui-1.7.1.custom.min.js\"></script>\r\n");
133       out.write("<script type=\"text/javascript\" src=\"js/jquery.jqGrid.min.js\"></script>\r\n");
134       out.write("<script type=\"text/javascript\" src=\"js/jquery.jqGrid.src.js\"></script>\r\n");
135       out.write("<script type=\"text/javascript\" src=\"js/user.manager.js\"></script>\r\n");
136       out.write("\r\n");
137       out.write("<script type=\"text/javascript\">\r\n");
138       out.write("var base = ‘");
139       out.print(path);
140       out.write("‘;\r\n");
141       out.write("</script>\r\n");
142       out.write("</body>\r\n");
143       out.write("</html>");
144     } catch (java.lang.Throwable t) {
145       if (!(t instanceof javax.servlet.jsp.SkipPageException)){
146         out = _jspx_out;
147         if (out != null && out.getBufferSize() != 0)
148           try {
149             if (response.isCommitted()) {
150               out.flush();
151             } else {
152               out.clearBuffer();
153             }
154           } catch (java.io.IOException e) {}
155         if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
156         else throw new ServletException(t);
157       }
158     } finally {
159       _jspxFactory.releasePageContext(_jspx_page_context);
160     }
161   }
162 }

重点看下它的_jspService方法,

  final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;

这就是定义内置对象的地方啦!知道了它生成的地方,接下来看下内置对象的种类的用途吧!

名称
说明

所属类型

属性范围

request

请求对象

javax.servlet.http.HttpServletRequest


request

response

响应对象

javax.servlet.http.HttpServletResponse

page

page

页面对象

 javax.lang.Object    

page
pageContext
页面上下文对象

javax.servlet.jsp.PageContext 

Page

session
会话对象
javax.servlet.http.HttpSession

session

application

应用程序对象

javax.servlet.ServletContext  

application

config

配置对象

javax.servlet.ServletConfig

Page

out

输出对象

javax.servlet.jsp.JspWriter


Page

exception

例外对象

javax.lang.Throwable

Page

看了所属类型,不知道是否发现HttpServletRequest、HttpServletResponse都是接口呢?而我们知道接口是不能直接实例化,需要依靠其子类进行实例化对象,但是我们Servlet参数中都是直接定义形参呢?

这是因为Sun公司只是定义了接口规范,并且规定了方法用途,具体怎么实现交由提供商自己实现的。如tomcat、weblogic都有自己的J2EE实现,实例化则是交由web容器进行实例化。

1.request对象:

客户端的请求信息被封装在request对象中,主要包括包括头信息、系统信息、请求方式以及请求参数等,然后做出响应。它是HttpServletRequest类的实例。


1

object getAttribute(String name)

返回指定属性的属性值

2

Enumeration getAttributeNames()

返回所有可用属性名的枚举 

3

String getCharacterEncoding() 

返回字符编码方式 

4

int getContentLength() 

返回请求体的长度(以字节数) 

5

String getContentType()

得到请求体的MIME类型 

6

ServletInputStream getInputStream()

得到请求体中一行的二进制流 

7

String getParameter(String name)

返回name指定参数的参数值 

8

 Enumeration getParameterNames() 

返回可用参数名的枚举 

9

String[] getParameterValues(String name)

返回包含参数name的所有值的数组 

10

String getProtocol()

返回请求用的协议类型及版本号 

11

String getScheme()

返回请求用的计划名,如:http.https及ftp等 

12

String getServerName()

 返回接受请求的服务器主机名 

13

int getServerPort() 

返回服务器接受此请求所用的端口号 

14

BufferedReader getReader()

返回解码过了的请求体 

15

String getRemoteAddr() 

返回发送此请求的客户端IP地址 

16

 String getRemoteHost()

返回发送此请求的客户端主机名 

17

void setAttribute(String key,Object obj) 

设置属性的属性值 

18

String getRealPath(String path) 

返回一虚拟路径的真实路径 

2.response对象:

response对象是对客户端的响应,但在JSP中很少直接用它,常用方法如下:


1

String getCharacterEncoding()

返回响应用的是何种字符编码 

2

ServletOutputStream getOutputStream() 

返回响应的一个二进制输出流 

3

PrintWriter getWriter() 

返回可以向客户端输出字符的一个对象 

4

void setContentLength(int len) 

设置响应头长度 

5

void setContentType(String type)

设置响应的MIME类型 

6

sendRedirect(java.lang.String location)

重新定向客户端的请求 

3.session对象:

当用户请求服务器时,服务器自动为其生成一个session对象的实例,以保存该用户的信息,跟踪用户的状态。当用户再次请求时,服务器判断该session是否存在,不存在则重新创建一个。直到客户端

与服务器端断开连接时(可以简单理解为关闭浏览器)该次会话结束。常用方法如下:


1

long getCreationTime() 

返回SESSION创建时间 

2

public String getId()

返回SESSION创建时JSP引擎为它设的惟一ID号 

3

long getLastAccessedTime()

返回此SESSION里客户端最近一次请求时间 

4

 int getMaxInactiveInterval() 

返回两次请求间隔多长时间此SESSION被取消(ms) 

5

String[] getValueNames()

返回一个包含此SESSION中所有可用属性的数组 

6

void invalidate() 

取消SESSION,使SESSION不可用 

7

boolean isNew() 

返回服务器创建的一个SESSION,客户端是否已经加入 

8

void removeValue(String name) 

删除SESSION中指定的属性 

9

void setMaxInactiveInterval() 

设置两次请求间隔多长时间此SESSION被取消(ms) 

4.page对象:
page指向的是JSP页面本身,其实就是转化后的Servlet对象本身,它是是Object对象的实例,所以它的方法都是Object的方法。可以看下它在Servlet里的定义:

 final java.lang.Object page = this;

5.pageContext对象:

pageContext对象是页面上下文,即代表JSP运行环境,是素有内置对象继承者,通过它可以获取到其他的8个内置对象。还是看刚才那个_jsp.java 文件

    response.setContentType("text/html; charset=utf-8");
    pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
    _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

我们可以看到application、config、session的赋值操作都是通过pageContext来获取的。此外其本身也是一个域对象(容器)可以将属性值存进pageContext中。常用方法如下:


1

getException

返回exception隐式对象

2

getPage

返回page隐式对象

3

getRequest

返回request隐式对象

4

getResponse

返回response隐式对象

5

getServletConfig

返回config隐式对象

6

getServletContext

返回application隐式对象

7

getSession

返回session隐式对象

8

getOut

返回out隐式对象

9

public void setAttribute(String name,Object value)
public void setAttribute(String name,Object value,int scope)


设置属性的属性值 

10

 public java.lang.Object getAttribute(String name)


获取属性的属性值 

11

public void removeAttribute(String name)


移除属性的属性值 

12

public java.lang.Object findAttribute(String name)


查找属性的属性值 

13

release()


该方法将会释放pageContext对象所占的资源

pageContext中有4个常量:

  public static final int PAGE_SCOPE        = 1;

    /**
     * Request scope: the named reference remains available from the
     * ServletRequest associated with the Servlet until the current request
     * is completed.
     */

    public static final int REQUEST_SCOPE    = 2;

    /**
     * Session scope (only valid if this page participates in a session):
     * the named reference remains available from the HttpSession (if any)
     * associated with the Servlet until the HttpSession is invalidated.
     */

    public static final int SESSION_SCOPE    = 3;

    /**
     * Application scope: named reference remains available in the
     * ServletContext until it is reclaimed.
     */

    public static final int APPLICATION_SCOPE    = 4;

分别代表着4个不同的作用域范围page、request、session、application。当调用getAttributeScope(String name)时,它会依照page-->request-->session-->application作用范围,分别搜

索对应的name值,返回第一个搜索的范围整数值。其他方法同理,setAttribute(String name,Object value,int scope)当设置了scope属性时,与其对应范围的set方法是一致的。


6.application对象:
application对象可以将信息保存在服务器中,直至服务器关闭,在整个应用过程都有效,类似系统全局变量。如我们在web.xml中配置Spring 的配置文件参数信息可以通过application来获取
 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/*.xml</param-value>
  </context-param>
application.getInitParameter("contextConfigLocation")
也可直接将属性值放至其中,以达到整个web应用共享该变量信息。常用方法如下:

1

Object getAttribute(String name)

返回给定名的属性值 


2

Enumeration getAttributeNames() 

返回所有可用属性名的枚举 


3

void setAttribute(String name,Object obj)

设定属性的属性值 


4

void removeAttribute(String name)

删除一属性及其属性值 

5

String getServerInfo()

返回JSP(SERVLET)引擎名及版本号 

6

String getRealPath(String path)

返回一虚拟路径的真实路径 

7

ServletContext getContext(String uripath)

返回指定WebApplication的application对象 

8

int getMajorVersion()

返回服务器支持的Servlet API的最大版本号 

9

int getMinorVersion()

返回服务器支持的Servlet API的最大版本号 

10

String getMimeType(String file)

返回指定文件的MIME类型 

11

URL getResource(String path)

返回指定资源(文件及目录)的URL路径 

12

InputStream getResourceAsStream(String path)

返回指定资源的输入流 

13

RequestDispatcher getRequestDispatcher(String uripath)

返回指定资源的RequestDispatcher对象 

14

Servlet getServlet(String name)

返回指定名的Servlet 

15

void log(String msg)

把指定消息写入Servlet的日志文件 

16

void log(Exception exception,String msg)

把指定异常的栈轨迹及错误消息写入Servlet的日志文件 

17

Enumeration getServlets()

返回所有Servlet的枚举 

18

Enumeration getServletNames()

返回所有Servlet名的枚举 

7.out对象:

out对象是JSPwriter的实例,jsp转换成Servlet后,返回静态hmtl就是由out进行返回的!作用就是像客户单输出内容,管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进

行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。其常用方法如下:


1

 void clear() 

清除缓冲区的内容 

2

void clearBuffer() 

清除缓冲区的当前内容 

3

void flush()

清空流 

4

int getBufferSize()

返回缓冲区以字节数的大小,如不设缓冲区则为0 

5

int getRemaining() 

返回缓冲区还剩余多少可用 

6

boolean isAutoFlush() 

返回缓冲区满时,是自动清空还是抛出异常 

7

void close() 

关闭输出流 

那么它和response得到的PrintWriter对象有什么异同呢?

1.都是继承自 Java.io.Writer ,JspPriter对象由JspWriter可以在JSP页面中直接用out对象输出.可以用pageContext.getOut();

得到JspWriter对象。PrintWrietr在JSP页面中必须用response.getWriter();

2.执行原理不同:JspWriter相当于一个带缓存功能的printWriter,它不是直接将数据输出到页面,而是将数据刷新到response的缓冲

区后再输出, response.getWriter直接输出数据(response.print()),所以(out.print)只能在其后输出。

8.config对象:

config对象主要用于获取初始化参数,如初始化某个Servlet时的初始化参数的获取。

 <servlet>
        <servlet-name>admin</servlet-name>
        <jsp-file>/TestConfig01.jsp</jsp-file>
        <init-param>
            <param-name>email</param-name>
            <param-value>[email protected]</param-value>
        </init-param>
        <init-param>
            <param-name>phone</param-name>
            <param-value>0411-12345678</param-value>
        </init-param>
        <init-param>
            <param-name>qq</param-name>
            <param-value>88888</param-value>
        </init-param>
    </servlet> 

其常用方法如下:


1

String getInitParameter(String name)

根据指定的初始化参数名称,获取对应的参数值


2

Enumeration getInitParameterNames()

获取所有的初始化参数名称


3

ServletContext getServletContext()

返回一个ServletContext接口的对象


4

String getServletName()

获取当前Servlet对象的名称。

9.exception对象:

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象。

其常用方法如下:


1

String getMessage()

返回描述异常的消息 

2

String toString()

返回关于异常的简短描述消息 

3

void printStackTrace()

显示异常及其栈轨迹 

4

Throwable FillInStackTrace() 

重写异常的执行栈轨迹 
时间: 2024-10-13 04:33:36

Java-浅谈JSP内置对象的相关文章

java基础篇---JSP内置对象详解

在JSP中为了简化用户的开发,提供了九个内置对象,这些内置对象将由容器为用户进行实例化,而用户直接使用即可,而不用像在java中那样,必须通过关键字new进行实例化对象之后才可以使用. No. 内置对象 类型 描述 1 pageContext javax.servlet.jsp.PageContext JSP的页面容器 2 request javax.servlet.http.HttpServletRequest 得到用户的请求信息 3 response javax.servlet.http.H

咸鱼入门到放弃8--jsp&lt;三&gt;jsp内置对象

NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.HttpServletRequest 3 response javax.servlet.http.HttpServletResponse 4 session javax.servlet.http.HttpSession 5 application javax.servlet.ServletContext 6 config jav

Java EE JSP内置对象及表达式语言

一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中最常用的对象,代表来自客户端的请求,调用request对象相应的方法可以获取关于客户请求的信息. 常见方法的用法示例: 1 <font size=5> 2 <br>客户端使用的协议是: 3 <% 4 String protocol = request.getProtocol();

JAVA遇见HTML——JSP篇:JSP内置对象(下)

什么是session session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 从上述定义中可以看到,session实际上是一个特定的时间概念 在服务器的内部中保存着不同用户的session session对象 session对象是一个JSP内置对象. session对象在第一个JSP页面被装载时自动创建,完成会话期管理. 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开

JSP内置对象详解

jsp中内置对象:request.response.session.applecation.out.pagecontesx.config.page.exception.cookie 1.request:是javax.servlet.httpservletRequest类型的对象,该对象是用户客户端的请求信息,主要用户接受客户端通过http协议传送到服务器的数据! (包括头部信息.系统信息.请求方式以及请求信息参数),jsp内置对象Web容器所创建的一组对象! 生命周期:jsp发出请求一个requ

JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次都要先创建这些对象,然后再去使用它们,这样就显得十分繁琐了,为了方便使用者,Sun公司在开发JSP的时候,把一些对象设置为内置对象,开发者在JSP页面编程的时候不必声明这些对象就能直接使用,这就是JSP的内置对象. 那么JSP对象有哪些呢? JSP内置对象          对应的类型   备注 R

Jsp内置对象的简单说明

声明 实习森的理解层次,希望有错大家一起纠正 本文主要信息来自网友共享的一个JSPAPI,不是特别全,只是对jsp内置对象进行了简单的介绍,这里我总结了一下 正文 Jsp主要内置了9个对象,分别为:Application.Exception.Out.PageContext.Page.Request.Response.Session以及Config,详细如下: Application对象 基础介绍: Application对象实现了不同用户之间的数据共享,声明周期最长了,服务器启动的时候,Appl

Jsp内置对象及EL表达式的使用

一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response  HttpServletResponse session HttpSession(有开关的:page指令的session属性的取值) application  ServletContext config  ServletConfig page this(当前Servlet对象) exception java.lang.Throwable(有开关

JSP内置对象(下)

JSP中共有9大内置对象: out对象 requset对象 response对象 session对象 pageContext对象 application对象 config对象 page对象 exception对象 JSP内置对象(上):http://wxmimperio.coding.io/?p=280 5. pageContext对象 pageContext对象被封装成javax.servlet.jsp.pageContext接口,他为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分