在前面学写了JSP的概念,运行原理,相信大家对JSP技术也已经有了一定的了解,但是这还只揭开了JSP的一角面纱。JSP作为Sun公司在上世纪推出的动态网站开发的神兵利器,为了给JSP增加锋芒,可谓是用心良苦(sang xin bing kuang)。其中的一项,就是我们今天要讲的主角,隐式对象。
1.JSP隐式对象
JSP隐式对象也称之为内置对象,是Sun公司为了方便Web应用程序开发,在JSP2.0规范中提供九个隐式对象给开发人员使用,JSP页面中默认创建,因此可以直接在JSP页面中使用。
在上图中,我们列举了JSP的9个隐式对象,从其对应的类型,我们可以看到其中有许多内置对象我们前面已经讲解过了,如request、response、config(ServletConfig)、session、application(ServletContext),如需使用,直接在jsp页面中的脚本元素中使用即可。
1.3 pageContext对象
对于pageContext对象,我们放到域对象中来讲。
其实许多人会觉得,这些内置对象的默认创建,如果许多JSP页面中使用不到,不是会造成内存资源的浪费?其实,我们通过上图也可以看到,许多内置对象在应用中是全局唯一的,在JSP页面中创建的只是一个引用,因此并不会占用过多的资源。
2.JSP域对象
域对象,顾名思义,就是可以存放数据的对象。大家可以回想下,在之前的学习中,有哪些对象是可以绑定属性(Attribute)的?其实还是很容易想到的,我们在学习Session的时候,就有提及过HttpServletRequest、ServletContext,当然HttpSession也可以绑定属性。
哇,一下说出来了三个。今天,我们就来学习最后这位神秘的域对象----PageContext。
2.1 PageContext
PageContext对象也是一个内置对象,在jsp中会默认创建一个实例对象,名为pageContext,表示当前JSP页面的运行环境,并提供获取其他隐式对象的方法,方法列表如下:
不过这些方法用处不大,因为本身内置对象在JSP页面中就默认创建的,并可直接在JSP页面中使用,不过如果需要传参的话,则可只传递一个pageContextd对象即可,然后可以通过其获取其他隐式对象。