- JSP应用与开发技术(第3版)
- 马建红 李学相 韩颖 王瑞娟 张晗
- 1478字
- 2020-08-28 20:33:35
4.7 其他JSP内置对象
除了以上介绍的5种常见的内置对象外,也经常使用其他内置对象,本节分别介绍它们的方法和应用。
4.7.1 pageContext对象
pageContext对象衍生于javax.servlet.jsp.PageContext类,该对象可以得到当前页面中所有其他的JSP隐含对象,如getRequest()、getResponse()、getOut()和getSesison()等,并提供了处理JSP各个对象与属性的方法。
pageContext对象用于访问页面有效属性的方法及对应的说明,如表4-8所示。
表4-8 pageContext对象访问页面内有效属性的方法
pageContext对象访问所有范围的属性操作与上面的方法类似,只是多了一个输入参数,例如设置变量值可以用setAttribute(String name, Object obj, int scope),其中,scope取值可以为PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE和APPLICATION_SCOPE,分别代表页内有效、请求有效、会话有效和应用有效。pageContext对象还可以实现页面重定向和包含页面等功能。
【例4-18】创建pagecontext1.jsp和pagecontex2.jsp页面,验证属性的作用域。
pagecontext1.jsp的代码如下:
在浏览器中输入http://localhost:8080/ch04//other/pagecontext1.jsp?name=test向pagecontext1.jsp传递参数,运行结果如图4-36所示。
图4-36 pagecontext1.jsp的运行结果
pagecontex2.jsp的代码如下:
通过超级链接跳转到pagecontext2.jsp查看显示结果,如图4-37所示。
图4-37 跳转到pagecontext2.jsp的运行结果
通过比较图4-36和图4-37,可以看出各属性的作用域。关闭浏览器,直接打开pagecontext2.jsp,结果会看到如图4-38所示。
图4-38 直接运行pagecontext2.jsp的结果
由此得出如下结论:
pageContext.setAtrribute("useName",name)设置的属性在当前页面有效。
pageContext.getSession().setAtrribute("session Value",name)设置的属性在session中有效。
pageContext.getServletContext().setAttribute("sharevalue",name)设置的属性是对所有页面共享的。
4.7.2 config对象
config对象是类javax.servlet.ServletConfig的一个对象,它标识Servlet的配置。config对象主要用来取得服务器的配置信息,在JSP页面通过JSP Container进行初始化时被传递。使用config对象,在修改需要在Web服务器中处理的变量时,不需要逐一修改JSP文件,而只需修改相应属性文件的内容,这样就大大简化了网络维护工作,而且能够避免由于忘记修改一些文件而造成的错误。config对象的常用方法及对应的说明如表4-9所示。
表4-9 config对象的常用方法及说明
【例4-19】创建config.jsp页面,利用config对象的方法,使用Servlet配置的初始值。
前面【例4-16】所示的计数器有一个缺陷,就是每当应用服务器关闭后再启动时,计数器就会从0开始重新计数。解决这个问题的办法就是在应用服务器死机后设置计数的初始值。
config.jsp的代码如下:
在config.jsp中利用config.getInitParameter("counter")方法获取Web服务器上初始参数counter的值。通过web.xml文件设置初始参数。
web.xml的代码如下:
从上面的配置可以看出,counter的初始值是1000,并且为config.jsp做了一个映射。运行这个JSP页面,在浏览器中输入http://localhost:8080/ch04/other/config_counter,结果如图4-39所示。
图4-39 config.jsp运行及刷新后的结果
注意
这里必须输入http://localhost:8080/ch04/other/config_counter。如果在浏览器里使用http://localhost:8080/ch04/other/config.jsp来访问,那么不能得到counter的参数。原因是当通过前一种方式访问config.jsp时,它是作为一个Servlet组件来运行的,而后者不一样。有关Servlet的内容请参考第10章。
【例4-20】利用config对象的方法,使用Servlet配置的多个初始值。
homepage.jsp的代码如下:
通过web.xml文件设置初始参数,增加如下代码:
从上面的配置可以看出,email、phone、qq的初始值是分别是service@zzu.edu.cn、0371-63888069、12345,并且为homepage.jsp做了一个映射。运行这个JSP页面,在浏览器中输入http://localhost:8080/ch04/homepage.jsp,结果如图4-40所示。
图4-40 homepage.jsp运行的结果
4.7.3 page对象
page对象代表了正在运行的由JSP文件产生的类对象,此对象在JSP中并不常用,用户只需了解其意义即可。
page对象是指向当前JSP程序本身的对象,有点像类中的this。page对象其实是java.lang.Object类的实例对象,它可以使用Object类的方法,如hashCode()、toString()等方法。page对象在JSP程序中的应用不是很广泛,但是java.lang.Object类还是十分重要的,因为JSP内置对象的很多方法的返回类型是Object,需要用到Object类的方法,读者可以参考相关的文档,这里就不详细介绍。
4.7.4 exception对象
exception对象是类java.lang.Throwable的一个对象,是为JSP提供用于处理程序运行错误的异常对象,可以配合page指令一起使用。参考【例3-10】,通过指定某一个页面为错误处理页面,把所有的错误都集中到那个页面进行处理,可以使整个系统的健壮性得到加强,也可以使程序的流程更加简单明晰。exception对象的常用方法及对应的说明如表4-10所示。
表4-10 exception对象的常用方法及说明
注意
必须在isErrorPage="true"的情况下才可以使用exception对象。