九大内置对象
[if !supportLists]1、 [endif]request对象
request 对象是 javax.servlet.httpServletRequest 类型的对象。该对
象代表了客户端的请求信息,主要用于接受通过 HTTP 协议传送到服务器的数据。
(包括头信息. 系统信息. 请求方式以及请求参数等)。request 对象的作用域为一次请求
[if !supportLists]2、 [endif]response对象
response 代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回
到客户端。response 对象也具有作用域,它只在 JSP 页面内有效。
[if !supportLists]3、 [endif]session对象
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个 session 对象,用于保存该用户的信息,跟踪用户的操作状态。
session 对象内部使用 Map 类来保存数据,因此保存数据的格式为
“Key/value”。 session 对象的 value 可以是复杂的对象类型,而不仅仅局限于字符串类型。
[if !supportLists]4、 [endif]application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则
application 对象中保存的信息会在整个应用中都有效。
与 session 对象相比,application 对象生命周期更长,类似于系统的“全局变量”
[if !supportLists]5、 [endif]out对象
out 对象用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓
冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
[if !supportLists]6、 [endif]pageContext对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP
页面的 out. request.
reponse. session. application 等对象。
pageContext 对象的创建和初始化都是由容器来完成的,在 JSP 页面中可
以直接使用 pageContext 对象。
[if !supportLists]7、 [endif]config对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext 对象
的getServletConfig() 方法可以获取一个 config 对象。
当一个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个
Servlet。
开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页
面提供初始化参数。
[if !supportLists]8、 [endif]page对象
page 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。 page 隐含对
象本质上包含当前 Servlet 接口引用的变量,类似于 Java 编程中的 this 指针。
[if !supportLists]9、 [endif]exception对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true"
的页面中才可以被使用,在一般的JSP 页面中使用该对象将无法编译 JSP 文件。
excepation 对象和 Java 的所有对象一样,都具有系统提供的继承结构。
exception 对象几乎定义了所有异常情况。
如果在 JSP 页面中出现没有捕获到的异常,就会生成 exception 对象,并
把 exception 对象传送到在 page 指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
EL表达式
EL(Expression
Language)是为了使 JSP 写起来更加简单。表达式语言的
灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式
的方法,让 Jsp 的代码更加简化。
语法结构非常简单: ${expressio}
EL 表达式一般操作的都是域对象中的数据,操作不了局部变量。域对象的
概念在 JSP 中一共有四个:pageContext, request, session,
application;范围依次
是,本页面,一次请求,一次会话,整个应用程序。而 EL 默认的查找方式为
从小到大查找,找到即可。当域对象全 找完了还未找到则返回空字符串””。
当需要指定从某个特定的域对象中查找数据时可以使用四个域对象对应的
空间对象,分别是:pageScope,
requestScope, sessionScope, applicationScope。
EL运算
使用 EL 表达式可以用来判断集合中是否有元素 ${empty list}
List遍历
<%
List<String> list = new
ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",
list);
%>
${empty list}
<br /> ${list[1] }
<br />
访问 map
这里使用到了 el 的另一种取值方式[“”]
<%
Map map = new HashMap();
map.put("aaa", "111");
map.put("bbb", 2222);
map.put("ccc-a", 333);
request.setAttribute("map", map);
%>
${empty map} ${map.aaa }
<br /> ${map["bbb"]}
<br /> ${map["ccc-a"]}
做+ 、- 、* 、/( 也可以使用div 来表示) 、% 、==
注意:String 也使用==比较
page 范围
page 范围是通过 pageContext 对象设置的,之前研究过的 page 属性范围中使用的是
pageContext 进行属性设置的,但是从 javax.servlet.jsp.PageContext 类中可以发现,有以下的
一种设置属性的方法:
public void setAttribute(String name, Object
value, int scope)
在 PageContext 类中存在四个表示属性范围的常量,可以直接通过这些常量指定 scope:
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE
在其它页面取值时,需要指定对应的作用域,或者通过 EL 表达式
<%=pageContext.getAttribute("a",pageContext.SESSION_SCOPE)
%>