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

简介: 本节书摘来自华章出版社《Servlet和JSP学习指南》一书中的第3章,第3.3节,作者(加)Budi Kurniawan,更多章节内容可以访问云栖社区“华章计算机”公众号查看

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页面的设计者所用。

相关文章
|
24天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
19 1
|
24天前
|
Java
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
19 0
|
1月前
使用Servlet上传多张图片——前台页面层(Index.jsp)
使用Servlet上传多张图片——前台页面层(Index.jsp)
14 0
|
1天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
24天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
7 0
|
24天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
14 0
|
24天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
16 0
|
2月前
|
Java
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
13 0
|
3月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
53 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查
|
3月前
|
设计模式 前端开发 Java
基于JSP/SERVLET学生管理系统
基于JSP/SERVLET学生管理系统