JSP除了作为前端技术把用户想要的数据、页面呈现给用户之外,也可以包含java代码,最终由容器把他转换成Java源代码,再编译成完整的Java Servlet类,而且这个Servlet的运行并无特别之处,容器会加载这个Servlet类,实例化并初始化,为每个请求建立一个单独的线程,并调用Servlet的Service()方法。JSP中的各个元素最终会由容器转化为Servlet,成为Servlet的一部分,那么Jsp中的各个元素对应这Servlet中的哪些部分的?这个问题必须弄清楚,先来看看Jsp的九大内置对象与Servlet API的映射。
隐式对象 Servlet API
out JspWriter
request HttpServletRequest
response HttpServletResponse
session HttpSession
application ServletContext
config ServletConfig
exception Throwable
pageContext pageContext
page Object
作用域 | 对象名称 | 中文名称 |
Request | request | 请求对象 |
Session | session | 会话对象 |
Application | application | 应用程序对象 |
Page | page | 页面对象 |
Page | pageContext | 页面上下文对象 |
Page | response | 响应对象 |
Page | out | 输出对象 |
Page | config | 配置对象 |
Page | exception | 例外对象 |
先弄清楚自己容易混淆的三个对象
1、ServletConfig:每个Servlet都有一个ServletConfig封装了Servlet的初始化参数 在<servlet></servlet>中
2、ServletContext:每个web应用都有一个ServletContext封装了整个web应用的初始化参数 在<context-param></context-param>中
3、pageContext:页面上下文对象,用于访问Jsp之间的共享数据,使用该对象可以访问page,request,session,application范围内的对象,主要有以下两个方法
getAttibute(String name)
getAttibute(String name,int scope)
page对象使用的较少
4、page:page对象是Jsp转化为Servlet后的实例,从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面中,很少使用page对象。
5、out是输出流对象
其他对象不在此一一说明。