首页 > 代码库 > 【转】JSP内置对象详细介绍(上)

【转】JSP内置对象详细介绍(上)

第一个问题: JSP有多少类内置对象?
要想回答好这个问题,首先是对JSP的基本知识和技术有深刻的理解和掌握。主要有九个
内置对象:application对象,config对象,exception对象,out对象,page对象,pageContext对象,request对象,reponse对象,session对象。
第二个问题:JSP的内置对象都是什么类型的?这些对象的作用是什么?它们常用的方法是什么呢?
(1)application对象:javax.servlet.ServletContext的实例。该实例代表JSP所属的Web应用本身,可用于JSP或者Servlet之间交换信息。常用的方法有:

方法

返回值类型

方法说明

getMajorVersion()

int

获取主要的Servlet API版本

getMinorVersion()

int

获取次要的Servlet API版本

getServerInfo()

String

获取服务器版本

getMimeType()

String

获取指定文件的MIME类型

getContext()

ServerContext

获取指定Local的Application context

getRealPath

String

获取指定path的绝对路径

getInitParameter(name)

String

获取Servlet初始化参数

getInitParameter(String paramName)用来获取Web应用的配置参数,这些配置参数应该在Web.xml文件中使用context-param元素配置,每个<context-param../>元素配置一个参数。
注意:每个Web应用只有一个ServletContext实例,在JSP页面可以通过application内置对象访问该实例,而在Servlet中则必须通过代码获取:ServletContext sc= getServletConfig().get ServletContext();
(2)config对象:javax.servlet.ServletConfig的实例,该实例代表JSP的配置信息,事实上,JSP页面通常无须配置,也就不存在配置信息了。更多的在Servlet中使用。

方法

返回值类型

方法说明

getInitParameter(name)

String

获取Servlet初始化参数

getInitParameterNames()

Enumeration

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

getServletContext()

ServletContext

获取当前Application context

getServletName()

String

获取Servlet名称

(3)exception对象:java.lang.Throwable的实例,只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时候,该属性才可以使用。
(4)out对象:javax..servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。<%= %>表达式的本质就是out.writer方法。

方法

返回值类型

方法说明

clear()

void

清除网页上输出内容

clearBuffer()

void

清除缓冲区内容

close()

void

关闭缓冲区,清除所有内容

getBufferSize()

int

取得缓冲区大小

getRemaining()

int

取得缓冲区剩余大小

isAutoFulsh()

boolean

获得缓冲区是否进行自动清除的信息

print(String str)

void

进行页面输出

println(String str)

void

进行页面输出并换行

(5)page对象:代表该页面本身,通常没有多少作用的。也就是servlet中的this。
(6)pageContext对象:PageContext的实例,该实例代表JSP页面上下文,使用该对象可以访问页面的共享数据。常用的方法为:getServletContext和getServletConfig方法。详细介绍见下面内容。
(7)request对象:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都将封装到该对象里面。获得参数的方法有:

 方法

返回值类型

方法说明

 getParameter(String name)

String

 获取参数名为name的参数值

 getParameterNames()

Enumeration

 获取所有参数的名称,可与上一个方法合用获取所有参数的值

 getParameterValues(String name)

 String[]

 获取参数名为name的所有参数,比如参数是多个checkbox

 getParameterMap()

 Map

 获取所有参数封装的Map实例,通过Map实例的String[] get(“id”)方法返回对应参数名为id的值数组

其他的方法有:

 方法

返回值类型

方法说明

getHeader(String name)

String

获取指定标题名称为name的标头

getHeaderName()

Enumeration

获取所有的标头名称

getIntHeader(String name)

int

获取标题名称为name的标头,内容以整数类型返回

getDateHeader(String name)

long

获取标题名称为name的标头,内容以日期类型返回

getCookies()

Cookie

获取相关的Cookie

getContextPath()

String

获取Context的路径

getMethod()

String

获取客户端的提交方式

getProtocol()

String

获取使用的HTTP协议

getQueryString()

String

获取请求的字符串

getRequestSessionId()

String

获取客户端的Session ID

getRequestURI()

String

获取请求的URI

getRemoteAddr()

String

获取客户端IP地址

(8)reponse对象:javax.servlet.http.HttpServletReponse的实例,代表了服务器对客户端的响应,通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象常用于重定向,常用的方法是getOutStream,sendRedirect方法等。

方法

返回值

方法说明

addCookie(Cookie cookie)

void

 

addDateHeader(String name,long date)

void

 

addHeader(String name,String value)

void

 

addIntHeader(String name,int value)

void

 

setDateHeader(String name,long date)

void

 

setHeader(String name,String value)

void

 

setIntHeader(String name,int value)

void

 

sendError(int sc)

void

传送状态码

sendError(int sc,String msg)

void

传送状态码和错误信息

setStatus(int sc)

void

设置状态码

sendRedirect(String URL)

void

页面重定向,用来实现页面跳转

注:这里的response对象的sendRedirect(String URL)方法设置页面重定向将改变浏览器地址栏信息,所以也称客户端跳转。
实例1:response对象实现页面的自动刷新:只需要早JSP页面中加上
< %–使用response对象的setIntHeader设置属性Refresh的值(单位为秒)来实现页面自动刷新–%> <% response.addIntHeader(“Refresh”,10); %>
实例2:实现页面自动跳转:可以通过response对象的setHeader()方法添加一个标题为Refresh的标头,并制定页面跳转时间及跳转页面,从而实现页面自动跳转。 <% response.setHeader(“Refresh”,”10;URL=http://www.baidu.com”); %>
这里使用setHeader方法添加一个标题为”Refresh”,值为”10,URL=http://www.baidu.com”的标头。
(9)session对象:javax.servlet.http.HttpServletReponse的实例,代表一次回话。当客户端浏览器与站点建立连接时候,会话开始;当客户端关闭浏览器时,回话结束。

方法

返回值类型

方法说明

getId()

String

获取session的ID

getCreationTime()

long

获取session的生成时间

getLashAccessedTime()

long

获取用户最后通过session发送请求时间

getMaxInactiveInterval()

long

获取session生命周期,如果超过这个时间则失效

invalidate()

void

清空session内容

isNew()

boolean

判断session是否为“新”的

setMaxInactiveInterval()

void

设置session生命周期,如果超过这个时间则失效

第三个问题:JSP内置对象的在什么情况下产生的呢?
一个JSP页面对应一个Servlet类,每个Servlet类有三个方法:
init方法:初始化JSP/Servlet的方法。
destory方法:销毁JSP/Servlet的方法。
service方法:对用户请求产生响应的方法。
request对象和reponse对象是service方法的形参,application对象,page对象,out对象,pageContext对象,session对象都是service的方法里面生成的局部变量。

转载请自:Struts教程网(网易旗下) ? JSP内置对象详细介绍(上)