`

JSTL入门:表达式(常用)

阅读更多
EL 表达式的格式是这样的:用美元符号({ })中<c:out value="${ user.firstName}"/>
组合静态文本和多个 EL 表达式以指定动态属性值

  <c:out value="Hello ${ user.firstName} ${ user.lastName}"/>
存取器       EL 提供了两种不同的存取器(点运算符(.)和方括号运算符([])),也支持通过           EL 操作特性和元素
点运算符通常用于访问对象的特性:例如,在表达式 ${ user.firstName} 中,使用点运算符来访问 user 标识符所引用对象的名为 firstName 的特性。EL 使用 Java bean 约定访问对象特性,因此必须定义这个特性的 getter 方法(通常是名为 getFirstName() 的方法),以便表达式正确求值。当被访问的特性本身是对象时,可以递归地应用点运算符。例如,具有city属性的address对象是user对象的属性,,表达式 ${ user.address.city} 将会返回这个地址对象嵌套的 city 特性。
方括号运算符用来检索数组和集合的元素。在数组和有序集合(也即,实现了 java.util.List 接口的集合)的情况下,把要检索的元素的下标放在方括号中。例如,表达式 ${ urls[3]} 返回 urls 标识符所引用的数组或集合的第四个元素(和 Java 语言以及 JavaScript 中一样,EL 中的下标是从零开始的)。
对于实现 java.util.Map 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${ commands["dir"]} 返回与 commands 标识符所引用的 Map 中的 "dir" 键相关联的值。
点运算符和方括号运算符还可以互操作。例如,如果数组的元素本身是对象,则可以使用方括号运算符来检索该数组的元素,并结合点运算符来检索该元素的一个特性(例如 ${ urls[3].protocol})。
点运算符和方括号运算符可能实现某种程度的互换。例如,也可以使用 ${ user["firstName"]} 来检索 user 对象的 firstName 特性,正如可以用 ${ commands.dir} 获取与 commands 映射中的 "dir" 键相关联的值一样。
运算符     

算术运算符  +、-、*、/(或 div)和 %(或 mod)
关系运算符  ==(或 eq)、!=(或 ne)、<</code>(或 lt)、>(或 gt)、<=(或le)和 >=(或 ge)
逻辑运算符  &&(或 and)、||(或 or)和 !(或 not)
验证运算符  empty
利用算术运算符的 EL 表达式
${item.price * (1 + taxRate[user.address.zipcode])}


 利用关系和逻辑运算符的 EL 表达式:关系运算符允许比较数字或文本数据。比较的结果作为布尔值返回
${(x >= min) && (x <= max)}


运算符 empty:验证数据,empty 运算符采用单个表达式作为其变量(也即,${ empty input}),并返回一个布尔值,该布尔值表示对表达式求值的结果是不是“空”值。求值结果为 null 的表达式被认为是空,即无元素的集合或数组。如果参数是对长度为零的 String 求值所得的结果,则 empty 运算符也将返回 true。
EL 运算符优先级(自顶到底,从左到右)
[], .
()
unary -、not、!、empty
*、/、div、%、mod
+、binary -
() <</code>、>、<=、>=、lt、gt、le、ge
==、!=、eq、ne
&&、and
||、or


文字值:   在 EL 表达式中,数字、字符串、布尔值和 null 都可以被指定为文字值。字符串可以用单引号或双引号定界。布尔值被指定为 true 和 false。
Taglib(伪指令):用于 JSTL core 库 EL 版本的 taglib 伪指令
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>


对应于 JSTL core 库的 taglib 伪指令有两种:
用于 JSTL core 库 RT 版本的 taglib 伪指令
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %>


变量标记:
JSTL 定制标记是 <c:set> 操作:<c:set> 操作提供基于标记的机制来创建和设置限制了作用域的变量,其中 var 属性指定了限制了作用域的变量的名称,scope 属性表明了该变量驻留在哪个作用域中,value 属性指定了分配给该变量的值。如果指定变量已经存在,则简单地将所指明的值赋给它。如果不存在,则创建新的限制了作用域的变量,并用该值初始化这个变量。scope 属性是可选的,其缺省值是 page,<c:set> 操作的语法

<c:set var="name" scope="scope" value="expression"/>



<c:set> 操作示例
<c:set var="timezone" scope="session" value="CST"/>
<c:set var="square" value="${param['x'] * param['x']}"/>



通过主体内容指定 <c:set> 操作的值

<c:set var="timezone" scope="session">CST</c:set>



<c:remove> 操作是用来删除限制了作用域的变量的,它获取两个属性。var 属性指定待删除变量的名称,scope 属性是可选的,它表示待删除变量来自哪个作用域,缺省为 page.<c:remove var="timezone" scope="session"/>

输出:<c:out>该标记对由其 value 属性指定的表达式进行求值,然后打印结果。如果指定了可选属性 default,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下,<c:out> 将打印其值.

<c:out> 操作的语法

<c:out value="expression" default="expression" escapeXml="boolean"/>



escapeXml 属性也是可选的。它控制当用 <c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 &lt;、&gt; 和 &amp;)。
带缺省内容的 <c:out> 操作示例 Hello
<c:out value="${user.username}" default=="Guest"/>



禁用转义的 <c:out> 操作示例
<c:out value="${user.company}" escapeXml=="false"/>

合并 <c:set> 和 <c:out> 以提供缺省变量值
<c:set var="timezone" scope=="session">
   <c:out value="${cookie['tzPref'].value}" default=="CST"/>
</c:set>

分享到:
评论

相关推荐

    JAVAWeb全课程笔记( html版)

    JSTL标签库: JSP标准标签库 MVC程序架构思想&案例 [总结]Path路径问题 [总结]JavaWeb乱码问题 [转自IBM]中文编码问题 JDBC入门 Jdbc事务控制管理 常用数据库连接池 编写JDBC框架 客户信息管理系统 Servlet Filter ...

    Java Web开发实战经典-基础篇课后习题答案及高级篇源码

    MLDN 李兴华 老师 Java Web基础篇课后习题答案,Java Web高级案例篇全部源码。 此源码从最基本的JSP页面到Model 1到Model 2,文件上传,EL,JSTL,Ajax,Structs,一点一点的修改讲解...第十六章.Structs常用标签:1题

    JavaWeb从入门到精通教学PPT

    JavaWeb从入门到精通这本书的教学PPT ,里面共有21章内容,从H5、XML、JSP、EL表达式、JSTL标准标签库和连接数据库的JDBC再到Spring,SpringMVC、MyBatis和Struts2、Hibernate常用框架的详细讲解。

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、...

    学习jsp的入门课件

    1.5次课 第9章 JSP开发常用技巧.ppt 1.5次课 第10章 JSP数据库开发.ppt 1次课 第11章 JDBC编程高级问题.ppt 1.5次课 第12章 开发自定义标记.ppt 1.5次课 第13章 标准标记库(JSTL).ppt 1.5次课 第14章 表达式...

    Java Web入门经典第二章源代码

    第二篇为“核心篇”,主要包括程序开发效率之利器——内置对象、 完美的“咖啡豆”——JavaBean技术、Web应用的缔造者——Servlet、使用表达式语言(EL)、页面控制利器——JSTL标签库、数据库应用开发等内容;...

    JSPweb开发技术与典型应用上

    JSP入门、HTTP和Servlet基础、JSP基本语法、JSP内置对象、JavaBean开发、MVC模式、JSP开发常用技巧、表达式语言、JSTL、自定义标签、JDBC、JSP实用开发技术、综合应用实例以及Struts/Hibernate/Spring初步等

    JSPweb开发技术与典型应用下

    JSP入门、HTTP和Servlet基础、JSP基本语法、JSP内置对象、JavaBean开发、MVC模式、JSP开发常用技巧、表达式语言、JSTL、自定义标签、JDBC、JSP实用开发技术、综合应用实例以及Struts/Hibernate/Spring初步等

    JavaWeb开发实战经典(李兴华).part1

    Tomcat服务器的安装及配置,JSP基础语法,JSP内置对象,JavaBean,文件上传,Servlet程序开发,表达式语言,Tomcat数据源,JSP标签编程,JSP标准标签库(JSTL),Ajax开发技术,Struts基础开发,Struts常用标签库,...

    JavaWeb开发实战经典(李兴华).part2

    Tomcat服务器的安装及配置,JSP基础语法,JSP内置对象,JavaBean,文件上传,Servlet程序开发,表达式语言,Tomcat数据源,JSP标签编程,JSP标准标签库(JSTL),Ajax开发技术,Struts基础开发,Struts常用标签库,...

    JavaWeb开发实战经典(李兴华).part3

    Tomcat服务器的安装及配置,JSP基础语法,JSP内置对象,JavaBean,文件上传,Servlet程序开发,表达式语言,Tomcat数据源,JSP标签编程,JSP标准标签库(JSTL),Ajax开发技术,Struts基础开发,Struts常用标签库,...

    Struts2 in action中文版

    6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...

    Java/JavaEE 学习笔记

    第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口...

    J2EE学习笔记(J2ee初学者必备手册)

    第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口...

    java开源包1

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包11

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包2

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包3

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包6

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包5

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

Global site tag (gtag.js) - Google Analytics