JSP之pagecontext
pageContext对象代表了该JSP页面的运行环境,它的作用有:
①这个对象封装了对其它八大隐式对象的引用
②pageContext自身还是一个域对象,可以用来保存数据,同时可以通过pageContext这个域对象操作另外三个域(Request域,Session域,ServletContext域)
③pageContext封装了WEB开发中经常涉及到的一些常用操作,例如包含和跳转到其他资源,检索其他域对象中保存的值等等。el表达式获取session中的值
比如我们去看看JSP的API,可以看到,在pageContext中有很多获取其他隐式对象的方法:
如果是写JSP,其实在JSP页面中最好不要写Java代码,所有的Java代码都需要使用自定义标签来封装,因此,其实这些方法都是在自定义标签中使用,而在自定义标签中,我们就无法使用另外八大隐式对象了,只能使用pageContext,因此在自定义标签中必须利用pageContext来获取其他隐式对象。
pageContext能作为一个域对象来存储数据,通常称为page域,而这个page域的范围只是在当前JSP页面中。例如我们可以使用pageContext.setAttribute方法和Attribute方法(这两个方法都从pageContext的父类JSPContext类继承而来)来在page域中设置和获取某个属性值,即存储的数据:
同时,pageContext还能指定存储的数据应该保存在哪个域中,并不止在page域上,当然还是刚才那两个方法,只不过重载了:
其中,“scope”参数代表各个域的常亮,有如下几个常亮:
pageContext中最重要的方法:findAttribute方法,使用pageContext.findAttribute方法能从四个域(page, request, session, context)中寻存储的数据,查的顺序也是从小到大(page--->request--->session--->context),只要在某个域中能查到相对应的键值对,就返回,如果四个域都没有则返回null。这个方式对于EL表达式是最重要的,例如JSP页面中有一个EL表达式:${data}  最终在Servlet中就会被翻译成pageContext.findAttribute(“data”)。
pageContext还提供了include包含和forward跳转这两种方法,这两种方法是RequestDispatch.include 方法和RequestDispatch.forward方法的简化,其实pageContext.include和pageContext.forward在Servlet 中内部依然还是使用request的方式,只是提供了简化。
本文作者:fjdingsd

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。