本文共 21908 字,大约阅读时间需要 73 分钟。
Servlet创建了几个由JSP引擎使用的隐式对象。开发人员不用事先声明就可以使用标准的变量来访问这些对象。JSP提供了9种隐式对象。
一、学习JSP的page 对象
page对象代表JSP本身,更准确地说它代表JSP被转译后的Servlet,它可以调用Servlet类所定义的方法。page对象其实是java.lang.Object类的实例对象,它可以使用Object类的方法,例如,hashCode()、toString()等方法。page对象在JSP程序中的应用不是很广,但是java.lang.Object类还是十分重要的,因为JSP内置对象的很多方法的返回类型是Object。
二、学习JSP的config 对象
config对象是在一个servlet程序初始化时,JSP引擎向它传递消息用的,此消息包括servlet程序初始化时所需要的参数及服务器的有关信息。Config对象其实是实现javax.servlet.ServletConfig接口的类的实例对象,它可以使用下面的3个方法。
1)getServletContext()
调用这个方法可以返回一个含有服务器相关信息的ServletContext对象,即JSP内置对象--application对象。
2)getInitParameter(String name)
调用这个方法可以返回servlet程序初始参数的值,参数名由name指定。
3)getInitParameterNames()
调用这个方法可以返回一个枚举对象,该对象由servlet程序初始化所需要的所有参数的名称构成。
我们可以通过如下所示的方式获取JSP/Servlet程序初始化所需要的参数名称和它们的值:
<%Enumeration enum=config.getInitParameterNames();while(enum.hasMoreElements){String paraName=(String)enum.nextElement();out.println(paraName+"----->"+config.getInitParameter(paraName)+"");}%> |
上面的代码段仅适用于JSP程序,如果要用于Servlet程序,需要修改部分代码。其次,有些服务器仅仅支持设定Servlet程序的初始参数,还支持设定JSP程序的初始参数,对于这一点,请读者要特别留心服务器的说明文档。
config对象在Servlet程序中的作用很大,不过在Servlet程序中没有内置对象这一说,严格的说法应该是ServletConfig接口在servlet程序中作用很大。但是JSP页面中的config对象的作用很小。
三、学习JSP的request 对象
request对象可以获得客户端的输入信息。request对象包括了从客户端传来的请求信息。在HTTP 1.1协议中,客户端请求信息是从客户端通过HTTP头(HTTP Header)和消息体传送到服务器端的。请求的参数是一个请求的组成部分,它们被作为字符串从客户端传送到JSP/Servlet容器,并被用于初始化request对象。
request 对象实现javax.servlet.http.HttpServletRequest接口的,
getAttribute(String name):返回由name指定的属性值getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组getCharacterEncoding():返回请求中的字符编码方式getContentLength():返回请求的Body的长度实例getInputStream():返回请求的输入流,用于获得请求中的数据getMethod():获得客户端向服务器端传送数据的方法getParameter(String name):获得客户端传送给服务器端的有name指定的参数值getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例getParameterValues(String name):获得有name指定的参数的所有值getProtocol():获取客户端向服务器端传送数据所依据的协议名称getQueryString():获得查询字符串getRequestURI():获取发出请求字符串的客户端地址getRemoteAddr():获取客户端的IP地址getRemoteHost():获取客户端的名字getSession([Boolean create]):返回和请求相关SessiongetServerName():获取服务器的名字getServletPath():获取客户端所请求的脚本文件的路径
四、学习JSP的response 对象
五、学习JSP的out 对象 out 对象能把结果输出到网页上。
out主要是用来控制管理输出的缓冲区(buffer)和输出流(output stream)。
void clear( ) 清除输出缓冲区的内容
void clearBuffer( ) 清除输出缓冲区的内容
void close( ) 关闭输出流,清除所有的内容
int getBufferSize( ) 取得目前缓冲区的大小(KB)
int getRemaining( ) 取得目前使用后还剩下的缓冲区大小(KB)
boolean isAutoFlush( )回传true表示缓冲区满时会自动清除;false表示不会自动清除并且产生异常处理
六、学习JSP的session 对象
session对象是十分重要的一个JSP内置对象,它可以用来在每一个用户之间分别保存用户信息,这与application对象不同。application对象用于在多个程序之间保存信息,application对象只有一个,它可以绑定若干个相当于全局变量的参数或者Java对象,每个JSP程序所访问的都是application对象的一个同步副本,都是一样的,而且application对象的生命周期贯穿服务器的整个运行周期。但是,服务器上的session对象却可以有多个,不同的用户所面临的session对象一般来说是不同的,当用户登录网站,系统将为他生成一个独一无二的session对象,用以记录该用户的个人信息,一旦该用户退出网站,那么该session对象将会被注销。session对象也可以绑定若干个参数或者Java对象,这些参数或者Java对象就相当于局部变量,不同session对象间的同名变量是不会相互干扰的。我们应用session对象的功能,可以十分简单地实现购物车等功能。
session对象实现javax.servlet.http.HttpSession接口。获取session对象有以下方法:
1)使用session关键字直接引用session对象
<% session.Method();%> |
2)使用request对象的getSession()方法
使用request对象的getSession()方法可以返回HttpSession接口的实例对象,也就是session对象,注意,这个新获得的HttpSession对象不能够被命名为session,因为session是JSP引擎自动创建的当前session对象的一个同步副本,如程序4-18所示。
createSession1.jsp
01 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>02 03 04 05 <%06 HttpSession mysession=request.getSession(true);07 out.println(mysession.getId());08 out.println("");09 out.println(session.getId());10 %>11 12 |
程序演示了getSession()方法的使用,它首先使用getSession()方法获取HttpSession对象--mysession,然后输出它的id,同时也输出session的id,运行结果证明了这两个id是一样的,要注意的是每个用户的session对象的id是不同的(服务器就靠不同的id鉴别不同的session对象),而且每个用户只能够有一个session对象,无论mysession还是session,都是当前session对象的一个同步副本。
图4-18 createSession1.jsp程序的运行效果 |
3)使用PageContext对象的getSession()方法
使用pageContext对象的getServletContext()方法可以获得application对象的副本,同样,使用pageContext对象的getSession()方法也可以获取session对象的一个副本,如程序4-19所示。
【程序4-19】createSession2.jsp
01 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>02 03 04 05 <%06 HttpSession mysession=request.getSession();07 HttpSession mysession2=pageContext.getSession();08 out.println(mysession.getId()+"");09 out.println(session.getId()+"");10 out.println(mysession2.getId()+"");11 %>12 13 |
图4-19 createSession2.jsp程序的运行效果 |
下面我们介绍session对象的主要用法:
1)getValue(String name)
和application对象一样,session对象也允许将若干个参数或者Java对象绑定在自己身上,相当于局部变量的作用,这些变量的生命周期就是session对象的存活周期,我们可以使用putValue()方法或者getValue()方法存取这些变量的值,或者使用removeValue()方法将它们删除,也就是解除它们和session对象之间的绑定关系,getValue()方法就用于获取指定名字的(由name指定)和session对象绑定的变量的值,如果不存在这个参数或者Java对象,那么该方法将会返回null值。getValue()方法的用法如下所示:
<% String username=(String)session.getValueNames("username");Vector vector=(Vector)session.getValue("vector");%> |
2)getValueNames()
该方法可以返回和当前session对象绑定在一起的参数或者Java对象的名字,该方法的返回值是一个字符串数组。它的使用方法如下所示:
<%String []name=session.getValueNames(); for(int i=0; i<name.length; i++) { out.println(session.getValue(name[i])); } %> |
3)getCreationName()
该方法可以返回当前session对象创建的时间,单位以毫秒计算,从1970年1月1日开始。用不同方法获取的session对象的副本,如果都调用这个方法,那么返回值都是一样的。读者可以试验一下下面的JSP代码片段,看看是否真的如此:
<%HttpSession mysession=request.getSession();HttpSession mysession2=pageContext.getSession(); out.println(mysession.getId()+"--->"+mysession.getCreationTime()+"");out.println(session.getId()+"--->"+session.getCreationTime()+"");out.println(mysession2.getId()+"--->"+mysession2.getCreationTime()+"");%> |
4)getId()
服务器端每生成一个session对象,都会赋予它一个独一无二的编号,这个编号不会重复,服务器就依赖此编号来鉴别不同的客户,getId()方法就返回当前session的编号,如果你使用上面介绍的方法创建了多个session对象的副本,那么这些副本调用getId()方法的返回值都是一样的。
5)getLastAccessedTime()
该方法用于返回当前session对象最后一次被操作的时间,单位是毫秒,该方法返回自1970年1月1日至今的毫秒数。应用这个方法,我们可以判断某个用户在站上一共待了多少时间。
6)getMaxInactiveInterval()
该方法可以获取当前session对象的最大休眠时间。服务器会为每个用户创建一个session对象,如果用户不断地进行浏览等操作,那么这个session对象就一直处于活动状态,如果用户仅仅是打开一个页面,然后不做任何操作,那么这个session对象就处于休眠状态,session对象如果处于休眠状态太久了,超过了一定的时间,那么服务器会默认用户已经退出了网站,并且会自动清除这个session对象。这个时间限制就是所谓的最大休眠时间,设定一个session对象的最大休眠时间,对于一个JSP服务器来说是十分重要的,因为这样可以及时回收闲置的资源。如果getMaxInactiveInterval()方法的返回值是-1,那么,session对象的最大休眠时间为无限长。
7)setMaxInactiveInterval(int time)
该方法通常和getMaxInactiveInterval()方法配合使用,主要用于设定最大休眠时间。它的使用情况如下所示:
<%session. setMaxInactiveInterval(300);%> |
8)removeValue(String name)
该方法可以使得某个参数或者Java对象与当前的session对象解除绑定状态。
9)putValue(String name, java.lang.Object value)
putValue()方法和removeValue()方法恰好相对,putValue()方法可以将某个参数或者Java对象和当前的Java对象绑定起来。putValue()方法的参数name指定需要绑定的名称,value指定需要绑定的参数或者Java对象的值。如果在使用putValue()方法以前,已经有同名的参数或者Java对象被绑定于session对象上,那么新值将会覆盖旧值。
10)invalidate()
该方法将会清除当前的session对象,解除它和任何参数或者Java对象的绑定关系。
注意:
能够和application对象或者session对象绑定的只能够是Java对象,如String、Integer、Vector等,而不能够是普通的数据类型,如int、double、float等,如果真需要将它们绑定到application对象或者session对象上,那么它们必须首先转化为相应的Java对象。
七、学习JSP的application对象
application对象是一个特别重要的JSP对象,它存在于服务器的内存空间中,服务器一旦启动,就会自动产生一个application对象,除非服务器被关闭,否则这个application对象将一直保持下去。application对象要由服务器自动清除它,不能被用户创建,用户也不能清除application对象,我们只能创建这个application对象的同步副本。application就是由JSP引擎自动创建的第一个application对象的同步副本。特别需要注意的是这些副本是同步的,任何一个副本上发生的变化都会影响到其他的副本。在application对象的生命周期中,在当前服务器上运行的每一个JSP程序都可以任意存取和这个application对象绑定的参数(或者Java对象)的值。application对象的这些特性为我们在多个JSP程序中、多个用户共享某些全局信息(如当前的在线人数等)提供了方便。由此我们可以不借助数据库就实现聊天室的功能。
因为环境的信息通常都储存在ServletContext中,所以常利用application对象来存取ServletContext中的信息。
application 对象实现javax.servlet.ServletContext 接口。我们具体如何获得application对象呢?有以下几种方法:
1)在JSP程序中直接使用application以代表application对象
<% application.Method(); %> |
2)使用ServletConfig接口
使用ServletConfig接口可以间接获取application对象,但是这个application对象的名字不能同样为application,因为application是JSP引擎创建的默认的application对象的副本,不能够被覆盖。使用ServletConfig接口其实就是使用config对象,config对象是实现ServletConfig接口的类的实例对象,它可以通过调用getServletContext()方法返回一个ServletContext接口的对象,也就是application对象的一个副本,如程序4-3所示。
【程序4-3】createApp1.jsp
01 <%@ page language="java" import="java.util.*"02 pageEncoding="ISO-8859-1"%>03 04 05 06 <%07 ServletContext app=config. getServletContext();08 out.println(app.getServerInfo());09 %>10 11 |
图4-4 createApp1.jsp程序的运行效果 |
3)使用pageContext对象获取application对象
pageContext对象的getServletContext()方法同样可以返回一个application对象的副本,如程序4-4所示。
【程序4-4】createApp2.jsp
01 <%@ page language="java" import="java.util.*"02 pageEncoding="ISO-8859-1"%>03 04 05 06 <%07 ServletContext app= pageContext. getServletContext();08 out.println(app.getServerInfo());09 %>10 11 |
图4-5 createApp2.jsp程序的运行效果 |
application对象的方法
1)getAttribute(String name)
当我们创建application对象的同步副本后,就可以存取和application对象绑定在一起的参数或者Java语言中的类的对象,因为application对象的生命周期是贯穿服务器的运行周期,因此,这些参数或者Java对象既然和application对象绑定在一起,那么它们的生命周期也应该和application对象一样,除非使用application对象的方法去绑定它或者使它和application对象解除绑定。使用getAttribute()方法可以返回那些和当前application对象绑定在一起的值或者Java对象。getAttribute()方法的参数name指定了目标参数或者目标Java对象的名字。
getAttribute()方法的使用方法如下:
<% String username=(String)application. getAttribute ("username");out.println(username);%> |
2)getAttributeNames()
该方法可以返回所有与当前application对象绑定在一起的参数或者Java对象的名字。这个方法的返回值是一个枚举对象(Enumeration)。它的使用方法如下:
<%Enumeration enum1=application.getAttributeNames();while(enum1.hasMoreElements()){String attrName=(String)enum1.nextElement();out.println(attrName+"");}%> |
3)getServerInfo()
该方法可以获得当前服务器的详细信息,不同的服务器返回的信息格式不一样。
4)setAttribute(String name, Object object)
该方法通常和getAttribute()方法及removeAttribute()方法搭配使用,它的作用就是将某个参数或者Java对象与application对象绑定在一起,在setAttribute()方法中,参数name指定和application对象绑定的参数或者Java对象的名称,参数object指定需要绑定的值,object必须是一个Java对象,例如Integer对象,但不能够是int类型的数据。如果在绑定新值时,已经有同名的参数或者Java对象和application对象绑定了,那么新值将会覆盖旧值。
setAttribute()方法的使用方法如下。
将某个字符串参数和application对象绑定在一起:
<%String username="george";String password="george";application.setAttribute("username",username);application.setAttribute("password", password);out.println(application.getAttribute("username"+""));out.println(application.getAttribute("password"));%> |
<%Vector vector=new Vector();//init this vectorapplication.setAttribute("vector", vector);Vector newVector=(Vector) application.getAttribute("vector");//user newVector…%> |
5)removeAttribute(String name)
通过该方法,我们可以使某个参数或Java对象与application对象解除绑定关系。一旦绑定关系被解除,我们就不能使用getAttribute()方法获取它们的值了,否则,将会返回null值。
它的使用方法如下:
<%String username="george";application.setAttribute("username",username);out.println(application.getAttribute("username"));application.removeAttribute("username");out.println(application.getAttribute("username"));%> |
6)log(String msg)
该方法用于往服务器的log文件中写入信息,至于是哪一个log文件,则由服务器来决定。利用这个方法,我们可以在log文件中记录访问者的信息,这对于统计访问流量来源方面十分有用,同时也便于管理员监控网站的运行情况。其实,还有一个同名但使用不同参数的log()方法,利用后者,我们可以将JSP程序执行过程中所发生的错误事件都记入log文件中。
在大部分的服务器中我们可以使用application.Method(…),但在有些较旧版本的服务器中,它们不支持application的形式,但它们支持以getServletContext().Method(…)的形式实现application对象的功能,读者一定要多加留心。
八、学习JSP的pageContext对象
pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它,所以知道request对象、response对象的人比较多,知道pageContext对象的人就比较少了。它是javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法。实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。pageContext对象的方法可以访问除本身以外的8个JSP内部对象,还可以直接访问绑定在application对象、page对象、request对象、session对象上的Java对象。pageContext对象相当于JSP程序中所有对象功能的集成者。不过,这里存在着一个问题,既然可以直接访问JSP内部对象,为什么还要多此一举,通过pageContext对象来访问它们呢?这也正是pageContext对象应用较少的原因。话虽这样说,pageContext对象总是JSP中9个内置对象不可或缺的一部分,读者还是需要掌握它的用法的。
pageContext对象的主要用法如下。
1)getOut()
该方法返回一个JspWriter类的实例对象,也就是JSP内置对象--out对象,可以往客户端写入输入流。它的使用方法如下::
<%JspWriter myout=pageContext.getOut();myout.println("myout write: hello world"+"");out.println("out write: hello world");%> |
2)getSession()
该方法的返回值是一个HttpSession接口的实例对象,即JSP内置对象--session对象,可以保存不同用户的信息。它的使用方法如下:
<%String username1="george";String password1="george";HttpSession mySession= pageContext. getSession();mySession.putValue("username",username1);mySession.putValue("password", password1);%> |
3)getPage()
该方法的返回值是一个java.lang.Object对象,也就是JSP内置对象--page对象。它的使用方法如下:
<%Object mypage=pageContext.getPage();out.println(mypage.toString());%> |
4)getResponse()
该方法的返回对象是javax.servlet.ServletResponse,也就是JSP内置对象--response对象,主要用于控制HTTP连接。它的使用方法如下:
<%ServletResponse myresponse=pageContext.getResponse();out.println(myresponse.getCharacterEncoding());%> |
5)getRequest()
该方法的返回对象是javax.servlet.ServletRequest,也就是JSP内置对象--request对象,主要用于获取客户端的信息。它的使用方法如下:
<%ServletRequest myrequest=pageContext.getRequest();out.println(myrequest.getRemoteHost());String username2="robin";String password2="robin"; myrequest.setAttribute("username",username2);myrequest.setAttribute("password", password2);%> |
6)getException()
该方法的返回值是当前页的exception对象。它的使用方法如下:
<%Exception myexception=pageContext. getException();out.println(myexception.getMessage());%> |
上面的代码片段最好在错误处理程序中使用,也就是page编译指令的isErrorPage属性为true的页面中。
7)getServletConfig()
该方法可以返回当前的config对象,用于获取JSP/Servlet程序的初始参数。它的使用方法如下:
<%ServletConfig myconfig=pageContext.getServletConfig();%> |
8)getServletContext()
该方法的返回值是一个ServletConfig接口的实例对象,也就是JSP内置对象--application对象的副本。它的使用方法如下:
<%ServletContext myapplication=pageContext.getServletContext();out.println(myapplication.getServerInfo());String username3="java";String password3="java"; myapplication.setAttribute("username",username3);myapplication.setAttribute("password", password3);%> |
9)setAttribute(String name, Object o, int scope)
pageContext对象的setAttribute()方法可以将参数或者Java对象绑定到application对象、session对象、request对象或者page对象上,这里的scope参数可以取以下的值。
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
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(String name, 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(String name, 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(String name)
pageContext对象的findAttribute()方法将在application对象、session对象、request对象、page对象内部查找是否有某个参数或者Java对象与这些对象绑定了,搜索顺序是先是范围最小的page对象,其次是request对象、session对象,最后是application对象,这个方法的返回值是第一个符合要求的Java对象的值。它的使用方法如下:
<%String username=pageContext.findAttribute("username");%> |
13)getAttributeScope(String name)
使用这个方法可以知道特定的参数或者Java对象和哪一个JSP对象绑定在一起。该方法的返回值是整型常数,可能是下面4个常数之一:
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE
如果返回值是pageContext.SESSION_SCOPE,表明这个Java对象和session对象绑定在一起。如果是其他返回值,读者可以依次类推。它的使用方法如下:
<%Int scope=pageContext.getAttributeScope("username");%> |
14)getAttributeNameInScope(int scope)
该方法可以获取特定JSP对象内部绑定了哪些参数或者Java对象,scope参数指定了该方法的作用范围。这个方法的返回值是一个枚举对象(Enumeration)。它的用法示例如下:
<%Enumeration enum=null;enum=pageContext.getAttributeNamesInScope(pageContext.SESSION_SCOPE);while(enum.hasMoreElements()){out.println(enum.nextElement()+"");}%> |
上面的JSP代码段将返回session对象中所绑定的参数或者Java对象的名字。
15)release()
该方法将会释放pageContext对象所占的资源。
16)forward(String url)
该方法可以实现网页的重定向功能,类似于response.sendRedirect()方法。
17)include(String relativeUrlPath)
该方法可以让当前文件包含进一个外部文件,类似于JSP的include编译指令和<jsp:include>操作指令。
由上面对pageContext对象的介绍,读者应该不难看出,pageContext对象有两大主要功能,分别是获取各JSP内部对象,以及直接操作与某些JSP对象绑定在一起的参数或者Java对象。
九、学习JSP的exception对象 若要使用exception 对象时,必须在page 指令中设定。< %@ page isErrorPage="true" %>才能使用。
exception提供的三个方法:
getMessage( ) 该方法返回错误信息。
printStackTrace( ) 该方法以标准错误的形式输出一个错误和错误的堆栈。
toString():该方法以字符串的形式返回一个对异常的描述。
如果某个JSP页面在执行的过程中出现了错误,那么JSP引擎会自动产生一个异常对象,如果这个JSP页面指定了另一个JSP页面为错误处理程序,那么JSP引擎会将这个异常对象放入到request对象中,传到错误处理程序中,在错误处理程序里,因为page编译指令的isErrorPage属性的值被设为true,那么JSP引擎会自动声明一个exception对象,这个exception对象从request对象所包含的HTTP参数中获得:
Throwable exception=(Throwable)request.getAttribute("javax.servlet.jspException"); |
事实上,javax.servlet.jspException是JSP引擎为exception对象所取的名字,并不存在所谓的jspException类,exception对象实际上是java.lang.Throwable类的实例对象。
下面的程序4-9和程序4-10分别演示了exception对象的使用方法。程序4-9中首先引发一个Java异常事件,使得当前JSP页面定向到指定的错误处理程序--程序4-10,并且在该页面中将错误信息输出。
【程序4-9】errorthrow1.jsp
01 <%@ page language="java" import="java.util.*" 02 pageEncoding="ISO-8859-1" errorPage="error.jsp"%>03 04 05 06 <%07 int result=1/0;08 %>09 10 |
程序4-9在执行时,将会引发一个除数为零的异常,并指定该异常由程序4-10进行处理。
【程序4-10】error.jsp
01 <%@ page language="java" import="java.util.*" 02 pageEncoding="ISO-8859-1" isErrorPage="true"%>03 <%04 String path = request.getContextPath();05 String basePath = request.getScheme() + "://" + request.getServerName() + ":" +06 request.getServerPort()+path+"/";07 %>08 09 10 11 |
图4-9 errorthrow1.jsp的运行效果 |
内置对象 | 代表内容 | 范围 |
request | 触发服务调用的请求 | request |
response | 对请求的应答 | page |
session | 为请求的客户创建的session对象 | session |
application | 从 servlet 配置对象获得的 servlet 上下文(如在getServletConfig() ,getContext()的调用中) | application |
out | 向输出流写入内容的对象 | page |
pageContext | 本 JSP 的页面上下文 | page |
page | 实现处理本页当前请求的类的实例 | page |
config | 本 JSP 的 ServletConfig | page |
exception | 表示JSP页面运行时产生的异常 | Page |
转载地址:http://ajyoi.baihongyu.com/