创新互联JSP教程:JSP表达式语言

JSP 表达式语言(EL)使得访问存储在 JavaBean 中的数据变得非常简单。JSP EL 既可以用来创建算术表达式也可以用来创建逻辑表达式。在 JSP EL 表达式内可以使用整型数,浮点数,字符串,常量 true、false,还有 null。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、鼓楼网站维护、网站推广。

一个简单的语法

典型的,当您需要在 JSP 标签中指定一个属性值时,只需要简单地使用字符串即可:


JSP EL 允许您指定一个表达式来表示属性值。一个简单的表达式语法如下:

${expr}

其中,​expr​ 指的是表达式。在 JSP EL 中通用的操作符是​"."​和​"[]"​。这两个操作符允许您通过内嵌的 JSP 对象访问各种各样的 ​JavaBean​ 属性。

举例来说,上面的​​标签可以使用表达式语言改写成如下形式:


当 JSP 编译器在属性中见到"​${}​"格式后,它会产生代码来计算这个表达式,并且产生一个替代品来代替表达式的值。

您也可以在标签的模板文本中使用表达式语言。比如​​标签简单地将其主体中的文本插入到 JSP 输出中:


Hello JSP!

现在,在​​标签主体中使用表达式,就像这样:


Box Perimeter is: ${2*box.width + 2*box.height}

在EL表达式中可以使用圆括号来组织子表达式。比如​${(1 + 2) * 3}​等于9,但是​${1 + (2 * 3)} ​等于7。

想要停用对 EL 表达式的评估的话,需要使用 ​page ​指令将 ​isELIgnored​ 属性值设为​ true​:

<%@ page isELIgnored ="true|false" %>

这样,EL 表达式就会被忽略。若设为​false​,则容器将会计算 EL 表达式。

EL中的基础操作符

EL表达式支持大部分Java所提供的算术和逻辑操作符:

操作符 描述
. 访问一个​Bean​属性或者一个映射条目
[] 访问一个数组或者链表的元素
( ) 组织一个子表达式以改变优先级
+
- 减或负
*
/ or div
% or mod 取模
== or eq 测试是否相等
!= or ne 测试是否不等
< or lt 测试是否小于
> or gt 测试是否大于
<= or le 测试是否小于等于
>= or ge 测试是否大于等于
&& or and 测试逻辑与
|| or or 测试逻辑或
! or not 测试取反
empty 测试是否空值

JSP EL中的函数

JSP EL 允许您在表达式中使用函数。这些函数必须被定义在自定义标签库中。函数的使用语法如下:

${ns:func(param1, param2, ...)}

ns 指的是命名空间(namespace),​func​指的是函数的名称,​param1​指的是第一个参数,​param2​ 指的是第二个参数,以此类推。比如,有函数​fn:length​,在 JSTL 库中定义,可以像下面这样来获取一个字符串的长度:

${fn:length("Get my length")}

要使用任何标签库中的函数,您需要将这些库安装在服务器中,然后使用​​标签在 JSP 文件中包含这些库。

JSP EL隐含对象

JSP EL支持下表列出的隐含对象:

隐含对象 描述
pageScope page 作用域
requestScope request 作用域
sessionScope session 作用域
applicationScope application 作用域
param Request 对象的参数,字符串
paramValues Request对象的参数,字符串集合
header HTTP 信息头,字符串
headerValues HTTP 信息头,字符串集合
initParam 上下文初始化参数
cookie Cookie值
pageContext 当前页面的pageContext

您可以在表达式中使用这些对象,就像使用变量一样。接下来会给出几个例子来更好的理解这个概念。

pageContext对象

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

${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​ 参数:

<%@ page import="java.io.*,java.util.*" %>
<%     String title = "Accessing Request Param"; %>


<% out.print(title); %>


<% out.print(title); %>

${param["username"]}

param 对象返回单一的字符串,而 ​paramValues ​对象则返回一个字符串数组。

header和headerValues对象

header​ 和 ​headerValues ​对象用来访问信息头,通过使用 ​request.getHeader​ 方法和​request.getHeaders​ 方法。

举例来说,要访问一个名为 ​user-agent​ 的信息头,可以这样使用表达式:​${header.user-agent}​,或者 ​${header["user-agent"]}​。

接下来的例子表明了如何访问 ​user-agent​ 信息头:

<%@ page import="java.io.*,java.util.*" %>
<%     String title = "User Agent Example"; %>


<% out.print(title); %>


<% out.print(title); %>

${header["user-agent"]}

运行结果如下:

header对象返回单一值,而headerValues则返回一个字符串数组。

网站名称:创新互联JSP教程:JSP表达式语言
网页网址:http://www.hantingmc.com/qtweb/news14/250214.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联