09. JSP EL表达式语言

来源:互联网 发布:mac mobi 制作软件 编辑:程序博客网 时间:2024/05/16 07:26
JSP EL表达式

JSP表达式语言(EL,Expression Language)在 JSP 2.0 版本引入,用于 JSP 文件中的数据访问,用于代替传统的 "<%= %>" 形式的Java表达式
EL 使得访问存储在JavaBean中的数据变得非常简单,JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式,在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null;

JSP EL 的基本语法

JSP EL 允许使用指定一个表达式来表示属性值,基本的语法如下:
在 JSP EL 中除了支持一般的Java操作符,同时支持 . 和 { } 操作符,这两个操作符允许通过内嵌的JSP对象访问各种 JavaBean 属性;
同时 JSP EL 表达式可以配合 <jsp:text>动作标签很方便地输出;
 
如下示例,使用 EL 可以很方便地获取 JavaBean 实例的属性:
1
<jsp:useBean id="student" class="demo.Student" />
2
<jsp:setProperty name="student" property="name" value="assad" />
3
<jsp:setProperty name="student" property="id" value="201321" />
4
 
5
<%--获取student的属性并输出,--%>
6
<jsp:text>
7
    Student name : ${student.name}
8
    Student ID : ${student.id}
9
</jsp:text>

可以通过 Page 指令禁止对EL表达式进行解析:



JSP EL 对JSTL函数的支持


JSP EL允许在表达式中使用函数。这些函数必须被定义在自定义标签库中。函数的使用语法如下: 
1
${ns:func(param1, param2, ...)}
ns指的是命名空间(namespace),func指的是函数的名称,param1指的是第一个参数,param2指的是第二个参数,以此类推。比如,有函数fn:length,在JSTL库中定义,可以像下面这样来获取一个字符串的长度: 


JSP EL 对隐含对象的支持

EL 表达式支持以下的隐含对象
pageScopepage 作用域requestScoperequest 作用域sessionScopesession 作用域applicationScopeapplication 作用域paramRequest 对象的参数,字符串paramValuesRequest对象的参数,字符串集合headerHTTP 信息头,字符串headerValuesHTTP 信息头,字符串集合initParam上下文初始化参数cookieCookie值pageContext当前页面的pageContext

pageContext对象
pageContext对象是JSP中pageContext对象的引用。通过pageContext对象,可以访问request对象。比如,访问request对象传入的查询字符串,就像这样:
1
${pageContext.request.queryString}

Scope对象
pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。
举例来说,如果您需要显式访问在applicationScope层的box变量,可以这样来访问:applicationScope.box。

param和paramValues对象
param和paramValues对象用来访问参数值,通过使用request.getParameter方法和request.getParameterValues方法。
举例来说,访问一个名为order的参数,可以这样使用表达式:${param.order},或者${param["order"]}。
接下来的例子表明了如何访问request中的username参数:
param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。


header和headerValues对象
header和headerValues对象用来访问信息头,通过使用 request.getHeader方法和request.getHeaders方法。
举例来说,要访问一个名为user-agent的信息头,可以这样使用表达式:${header.user-agent},或者${header["user-agent"]}。
接下来的例子表明了如何访问user-agent信息头:
1
<%@ page import="java.io.*,java.util.*" %>
2
<%
3
String title = "User Agent Example";
4
%>
5
<html>
6
<head>
7
<title><% out.print(title); %></title>
8
</head>
9
<body>
10
<center>
11
<h1><% out.print(title); %></h1>
12
</center>
13
<div align="center">
14
<p>${header["user-agent"]}</p>
15
</div>
16
</body>
17
</html>