JSP内置对象
JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐含对象也被称为预定义变量。
JSP所支持的九大隐含对象:
request HttpServletRequest类的实例
response HttpServletResponse类的实例
out PrintWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page httpJspPage类的实例,类似于Java类中的this关键字
Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象
request对象
request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
response对象
response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
out对象
out对象是javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。
最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered=‘false‘属性来轻松关闭缓存。
JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的方法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。
下表列出了我们将会用来输出boolean,char,int,double,Srtring,object等类型数据的重要方法:
1.public abstract void clear()
清除缓冲区中的内容,不将数据发送至客户端。
2.public abstract void clearBuffer()
将数据发送至客户端后,清除缓冲区中的内容。
3.public abstarct void close()
关闭输出流。
4.public abstract void flush()
输出缓冲区中的数据。
5.public intgetBufferSize()
获取缓冲区的大小。缓冲区的大小可用<%@page buffer="size" %>设置。
6.public abstract int getRemainning()
获取缓冲区剩余空间的大小
7.public booleanisAutoFlush()
获取用<%@ page is AutoFlush="true/false"%>设置的AutoFlush值。
8.public abstract void newLine()
输出一个换行字符,换一行。
9.public abstract void print()
显示各种数据类型的内容。
10.public abstract void println()
分行显示各种数据类型的内容。
session对象
session对象是javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。
session对象用来跟踪在各个客户端请求间的会话。
application对象
application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext类的实例。
这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
application、session、request、page他们的使用方法基本上都是一致的,只不过作用范围不一样而已:
application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。
session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。
request:请求作用域,就是客户端的一次请求。
page:一个JSP页面。
服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
1.getAttribute()
返回由name指定的名字的application对象的属性的值.
2.getAttributeNames()
返回所有的application对象的属性的名字,其结果是一个枚举的实例.
3.getInitParameter( String name )
返回由name指定的名字的application对象的某个属性的初始值.
4.getServletInfo()
返回servlet编译器的版本的信息.
5. setAttribute(String name , Object object )
设置由name指定的名字的application对象的属性的值object.
需要说明的是在一个所用范围内setAttruibute时请尽量不要多次set同一个对象ID,以防止对象所保存的信息被改变而无用。(但某些情况下这恰恰是有用处的!)
config对象
config对象是javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。
这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。
以下是config对象的使用方法:
config.getInitParameter(“name”):取得指定名字的Servlet初始化参数值。
config.getInitParameterNames():取得Servlet初始化参数列表,返回一个枚举实例。
config.getServletContext():取得Servlet上下文(ServletContext)。
config.getServletName():取得生成的Servlet的名字。
pageContext 对象
pageContext对象是javax.servlet.jsp.PageContext类的实例,用来代表整个JSP页面。
这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。
这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。
pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。
PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE,APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。
其中一个重要的方法就是removeArribute(),它可接受一个或两个参数。比如,pageContext.removeArribute("attrName")移除四个scope中相关属性,但是下面这种方法只移除特定scope中的相关属性:
pageContext.removeAttribute("attrName",PAGE_SCOPE);
1)getOut()
该方法返回一个JspWriter类的实例对象,也就是JSP内置对象——out对象,可以往客户端写入输入流。它的使用方法如下:
2)getSession()
该方法的返回值是一个HttpSession接口的实例对象,即JSP内置对象——session对象,可以保存不同用户的信息。它的使用方法如下:
3)getPage()
该方法的返回值是一个java.lang.Object对象,也就是JSP内置对象——page对象。它的使用方法如下:
4)getResponse()
该方法的返回对象是javax.servlet.ServletResponse,也就是JSP内置对象——response对象,主要用于控制HTTP连接。它的使用方法如下:
5)getRequest()
该方法的返回对象是javax.servlet.ServletRequest,也就是JSP内置对象——request对象,主要用于获取客户端的信息。它的使用方法如下:
6)getException()
该方法的返回值是当前页的exception对象。它的使用方法如下:
7)getServletConfig()
该方法可以返回当前的config对象,用于获取JSP/Servlet程序的初始参数。它的使用方法如下:
8)getServletContext()
该方法的返回值是一个ServletConfig接口的实例对象,也就是JSP内置对象——application对象的副本。它的使用方法如下:
9)setAttribute(Stringname, Object o, int scope)
pageContext对象的setAttribute()方法可以将参数或者Java对象绑定到application对象、session对象、request对象或者page对象上,这里的scope参数可以取以下的值。
l pageContext.PAGE_SCOPE
l pageContext.REQUEST_SCOPE
l pageContext.SESSION_SCOPE
l pageContext.APPLICATION_SCOPE
当scope参数的值为pageContext.SESSION_SCOPE时,调用PageContext对象的setAttribute()方法和调用session对象的putValue()方法是等效的,都是将某个参数或者Java对象和当前的session绑定起来。如果scope参数的值为如果scope参数的值为pageContext.APPLICATION_SCOPE,那么调用PageContext对象的setAttribute()方法和调用application对象的setAttribute()方法是等效的。如果scope参数是其他的值,原理也是一样的,我们就不多说了。它的使用方法如下:
<% pageContext.setAttribute("username","george", pageContext.APPLICATION_SCOPE); pageContext.setAttribute("username","robin",pageContext. SESSION_SCOPE); %>10)getAttribute(Stringname, int scope)
pageContext对象的getAttribute()方法也可以直接获取和application对象、page对象、session对象、request对象相互绑定的参数或者Java对象的值。这个方法的scope参数的意义和上面讲的一样。如果scope参数的值是pageContext.REQUEST_SCOPE,那么getAtttribute()方法就在当前的request对象内部查找有没有绑定一个名为name的Java对象,如果有,就返回这个对象,如果没有,返回null值。如果scope参数的值是pageContext.APPLICATION_SCOPE,那么getAtttribute()方法的作用范围将是application对象。它的使用方法如下:
<% pageContext.getAttribute("username",pageContext.APPLICATION_SCOPE); pageContext.getAttribute("username",pageContext.SESSION_SCOPE); %>11)removeAttribute(Stringname, int scope)
顾名思义,pageContext对象的removeAttribute()方法可以直接解除application对象、session对象、request对象、page对象和某个特定的参数或者Java对象的绑定关系。这个方法的scope参数指定了作用的范围,如果scope参数的值为pageContext.SESSION_SCOPE,那么removeAttribute()方法将会使某个参数或者Java对象和当前的session对象解除绑定关系,如果scope参数是其他值,原理也一样的。它的使用方法如下:
<% pageContext.removeAttribute("username", pageContext.APPLICATION_SCOPE); pageContext.removeAttribute("username",pageContext.SESSION_SCOPE); %>12)findAttribute(Stringname)
pageContext对象的findAttribute()方法将在application对象、session对象、request对象、page对象内部查找是否有某个参数或者Java对象与这些对象绑定了,搜索顺序是先是范围最小的page对象,其次是request对象、session对象,最后是application对象,这个方法的返回值是第一个符合要求的Java对象的值。它的使用方法如下:
13)getAttributeScope(Stringname)
使用这个方法可以知道特定的参数或者Java对象和哪一个JSP对象绑定在一起。该方法的返回值是整型常数,可能是下面4个常数之一:
l pageContext.PAGE_SCOPE
l pageContext.REQUEST_SCOPE
l pageContext.SESSION_SCOPE
l pageContext.APPLICATION_SCOPE
如果返回值是pageContext.SESSION_SCOPE,表明这个Java对象和session对象绑定在一起。如果是其他返回值,读者可以依次类推。它的使用方法如下:
Intscope=pageContext.getAttributeScope("username");
14)getAttributeNameInScope(intscope)
该方法可以获取特定JSP对象内部绑定了哪些参数或者Java对象,scope参数指定了该方法的作用范围。这个方法的返回值是一个枚举对象(Enumeration)。它的用法示例如下:
上面的JSP代码段将返回session对象中所绑定的参数或者Java对象的名字。
15)release()
该方法将会释放pageContext对象所占的资源。
16)forward(Stringurl)
该方法可以实现网页的重定向功能,类似于response.sendRedirect()方法。
17)include(StringrelativeUrlPath)
该方法可以让当前文件包含进一个外部文件,类似于JSP的include编译指令和<jsp:include>操作指令。
由上面对pageContext对象的介绍,读者应该不难看出,pageContext对象有两大主要功能,分别是获取各JSP内部对象,以及直接操作与某些JSP对象绑定在一起的参数或者Java对象。
page 对象
这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。
page 对象就是this对象的同义词。
exception 对象
exception 对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。