《Servlet和JSP学习指南》一3.3 隐式对象

3.3 隐式对象

Servlet容器将几个对象传给它所运行的Servlet。例如,在Servlet的service方法中获得HttpServletRequest和HttpServletResponse,并在init方法中获得ServletConfig。此外,还可以通过在HttpServletRequest对象中调用getSession获得一个HttpSession。
在JSP中,可以通过使用隐式对象来获取那些对象。表3-1列出了隐式对象。
例如,隐式对象request表示由Servlet/JSP容器传给Servlet的service方法的HttpServletRequest。可以像使用HttpServletRequest的变量引用一样使用request。例如,以下代码是从HttpServletRequest对象处获取userName参数。
image

pageContext是指为页面创建的javax.servlet.jsp.PageContext。它提供了有用的context信息,并通过一些名如其义的方法来访问与Servlet有关的各种对象,例如,getRequest、getResponse、getServletContext、getServletConfig及getSession。这些方法在Scriptlet中作用不大,因为它们所返回的对象可以通过隐式对象request、response、session及application更直接地访问到。但是,如第4章所述,PageContext允许利用Expression Language访问那些对象。
image

PageContext提供的另一些重要的方法是那些存取属性,如getAttribute和setAttribute方法。属性可以保存在以下4种范围中:page、request、session及application。page范围最窄,保存在这里的属性只能在同一个JSP页面中使用。request范围是指当前的ServletRequest,session范围是指当前的HttpSession,application范围是指Servlet-Context。
PageContext中的setAttribute方法具有以下签名:
image

scope值可以是以下任意一个PageContext中的static final int值:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE及APPLICATION_SCOPE。
另外,属性也可以保存在page范围中,可以利用下面这个setAttribute方法重载:
image

例如,下面这个Scriptlet在ServletRequest中保存了一个属性。
image

上述代码与下面这行代码的效果是一样的:
image

隐式对象out引用javax.servlet.jsp.JspWriter,它类似于在HttpServletResponse中调用getWriter()之后得到的java.io.PrintWriter。也可以调用它的print方法重载PrintWriter,将消息发送到浏览器。例如:
image
代码清单3-3中的implicitObjects.jsp页面示范了部分隐式对象的用法。
image

可以利用下面这个URL调用implicitObjects.jsp页面:
image

这个页面在浏览器中产生了以下文本:
image
image

你在浏览器中看到的具体内容取决于你使用什么样的浏览器,及其所处的环境。
注意,在默认情况下,JSP编译器是将JSP页面的内容类型设为text/html。如果你发送了另一种不同的类型,就必须通过调用response.setContentType()或者利用page指令(详情查看3.4节)来设置内容类型。例如,下面的代码就是将内容类型设为text/json:
image

还要注意,隐式对象page表示当前的JSP页面,一般不为JSP页面的设计者所用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值