??xml version="1.0" encoding="utf-8" standalone="yes"?>
在jstl中的fn标签也是我们在网设计中l常要用到的很关键的标签Q在使用的时候要先加上头
<%@ taglib uri="
具体使用Ҏ请参见下表:
|
函数 |
描述 |
fn:contains(string, substring) |
如果参数string中包含参数substringQ返回true |
fn:containsIgnoreCase(string, substring) |
如果参数string中包含参数substringQ忽略大写Q,q回true |
fn:endsWith(string, suffix) |
如果参数 string 以参数suffixl尾Q返回true |
fn:escapeXml(string) |
有Ҏ意义的XML (和HTML)转换为对应的XML character entity codeQƈq回 |
fn:indexOf(string, substring) |
q回参数substring在参数string中第一ơ出现的位置 |
fn:join(array, separator) |
一个给定的数组array用给定的间隔Wseparator串在一Pl成一个新的字W串q返回?/p> |
fn:length(item) |
q回参数item中包含元素的数量。参数Itemcd是数l、collection或者String。如果是Stringcd,q回值是String中的字符数?/p> |
fn:replace(string, before, after) |
q回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方Qƈq回替换后的l果 |
fn:split(string, separator) |
q回一个数l,以参数separator 为分割符分割参数stringQ分割后的每一部分是数组的一个元?/p> |
fn:startsWith(string, prefix) |
如果参数string以参数prefix开_q回true |
fn:substring(string, begin, end) |
q回参数string部分字符? 从参数begin开始到参数end位置Q包括end位置的字W?/p> |
fn:substringAfter(string, substring) |
q回参数substring在参数string中后面的那一部分字符?/p> |
fn:substringBefore(string, substring) |
q回参数substring在参数string中前面的那一部分字符?/p> |
fn:toLowerCase(string) |
参数string所有的字符变ؓ写Qƈ其q回 |
fn:toUpperCase(string) |
参数string所有的字符变ؓ大写Qƈ其q回 |
fn:trim(string) |
去除参数string 首尾的空|q将其返?/p> |
2) 用来某范围(request,session,application{?中设|某个?br />
3) 用于删除某个变量或者属?br />
4) 捕获由嵌套在它里面的标签抛出的异?br />
cd | 标识W?/strong> | 描述 |
JSP | pageContext |
PageContext 实例对应于当前页面的处理 |
作用?/td> | pageScope |
与页面作用域属性的名称和值相兌?Map c?/td>
|
requestScope |
与请求作用域属性的名称和值相兌?Map c?/td>
| |
sessionScope |
与会话作用域属性的名称和值相兌?Map c?/td>
| |
applicationScope |
与应用程序作用域属性的名称和值相兌?Map c?/td>
| |
h参数 | param |
按名U存储请求参数的主要值的 Map c?/td>
|
paramValues |
请求参数的所有g?String 数组存储?Map c?/td>
| |
h?/td> | header |
按名U存储请求头主要值的 Map c?/td>
|
headerValues |
请求头的所有g?String 数组存储?Map c?/td>
| |
Cookie | cookie |
按名U存储请求附带的 cookie ?Map c?/td>
|
初始化参?/td> | initParam |
按名U存?Web 应用E序上下文初始化参数?Map c?/td>
|
管 JSP ?EL 隐式对象中只有一个公共对象(pageContext
Q,但通过 EL 也可以访问其?JSP 隐式对象。原因是 pageContext
拥有讉K所有其它八?JSP 隐式对象的特性。实际上Q这是将它包括在 EL 隐式对象中的主要理由?/p>
其余所?EL 隐式对象都是映射Q可以用来查扑֯应于名称的对象。前四个映射表示先前讨论的各U属性作用域。可以用它们来查扄定作用域中的标识W,而不用依赖于 EL 在缺省情况下使用的顺序查找过E?/p>
接下来的四个映射用来获取h参数和请求头的倹{因?HTTP 协议允许h参数和请求头h多个|所以它们各有一Ҏ。每对中的第一个映返回请求参数或头的主要|通常是恰巧在实际h中首先指定的那个倹{每对中W二个映允许检索参数或头的所有倹{这些映中的键是参数或头的名称Q但q些值是 String
对象的数l,其中的每个元素都是单一参数值或头倹{?/p>
cookie 隐式对象提供了对p求设|的 cookie 名称的访问。这个对象将所有与h相关联的 cookie 名称映射到表C那?cookie Ҏ的 Cookie
对象?/p>
最后一?EL 隐式对象 initParam
是一个映,它储存与 Web 应用E序相关联的所有上下文的初始化参数的名U和倹{初始化参数是通过 web.xml
部v描述W文件指定的Q该文g位于应用E序?WEB-INF
目录中?/p>
EL元素可以出现在模板文本中Q也可以出现?/span>jsp标记的属性中?/span>
1?/span>EL变量范围Q?/span>
?/span>EL中访问变量的值可以直接?/span> ${ 变量?/span> } or ${ sessionScope.username }
规则Q默认情况下Q?/span>JSP引引擎会按照page?/span>request?/span>session?/span>application的范围搜?/span>user关键字,然后该对象取出Qƈ昄其对应的成员。如果在以上的范围中有同名的key关键字,q样׃出现问题Q而且?/span>JSP引擎L索所有的范围Q会降低效率。所以,我们需要给Z个范_通过以下的方式:
CZ |
含义 |
${pageScope.user.name} |
?/span>page范围内取出对?/span> |
${requestScope.user.name} |
?/span>request范围内取出对?/span> |
${sessionScope.user.name} |
?/span>session范围内取出对?/span> |
${applicationScope.user.name} |
?/span>application范围内取出对?/span> |
2?/span>EL关键字(16个)Q?/span>
and |
eq |
gt |
ge |
true |
instanceof |
null |
div |
or |
ne |
lt |
not |
false |
le |
empty |
mod |
3、访问运符.?/span>[ ]Q?/span>
EL使用讉Kq算W?#8220;.“?#8221;[ ]“来存取数据?/span>
讉Kq算W?#8220;.“通常用于引用一个对象的属性。例如,讉Kperson对象?/span>name属性:
${person.name}在这U情况下Q运符.?/span>[ ]可以怺替换使用?/span>${person[“name“]}?/span>
.?/span>[ ] 也可混合使用${sessionScope?/span>Cart[0].price}
差异Q当存取的属性名包括Ҏ字符Q如“.“?#8221;-“{)
“[ ]“q算W比”.“ q算W能更好支持动态取值的情况?/span>
4、算术运:
EL支持通用的算术运,包括+ - * / %
可以使用div代表除法( / )q算Q?/span>mod代表?/span>( % )q算?/span>
术q算W的优先U:
注意Q除法中Q如果除?/span>0Q返回gؓ无穷大而不是错误?/span>
5、关p运:
EL支持通用的关p运,包括Q?/span>= != < > <= >=
也可以?/span> eq ne lt gt le ge
EL关系q算的优先顺序低于算术运,关系q算的优先顺序是Q?/span>
1) <,>,<=,>=
2) == ,!=
3) EL中用条件判断:
操作 |
描述 |
CZ |
l果 |
==Q?/span>eqQ?/span> |
是否相等 |
${5==5} |
True |
!=Q?/span>neQ?/span> |
是否不等 |
${5!=5} |
false |
<Q?/span>ltQ?/span> |
是否于 |
${5<7} |
True |
>Q?/span>gtQ?/span> |
是否大于 |
${5>7} |
false |
<=Q?/span>leQ?/span> |
是否于{于 |
${5 le 5} |
true |
>=Q?/span>geQ?/span> |
是否大于{于 |
${5 ge 6} |
false |
l 判断一个变量是否ؓI:
例如Q?/span>${empty param.choice}${empty sessionScope.userName}
6、逻辑q算Q与&&、或|| 、非Q?/span>
优先U低于关p运符Q逻辑q算W之间的优先序Q?/span>
1.Q?/span>(not)
2.&& (and)
3.|| (or)
7?/span>emptyq算W?/span>
?/span>EL中有一个特D的q算W?/span>emptyQ如果操作数gؓnullq回trueQ或者操作数本n是一个空的容器、空的数l或长度?/span>0的字W串{也q回true?/span>
注:I容器指的是不包含Q何元素的容器。空数组表示其大ؓ0的数l?/span>
8、自动类型{?/span>
EL支持自动cd转换?/span>1) 对象的简明访问:
一个有范围的对象,名字?/span>usernameQ输出时可以使用Q?br />
${ username }
2) 对象属性的单表C?/span>
输出customer对象?/span>firstname属性可以直接用:
${customer.firstname }
3) 寚w合元素的单访?/span>
讉KArray?/span>List?/span>Map的元素,只需使用下面表达式:
${variable[indexOrKey]}
4) 对请求参数?/span>Cookie和其他请求数据的z访?/span>
使用EL中预定义的隐含对象,可以方便讉Kh相关的数据?/span>
如会?/span>ID的获取如下:
${pageContext.session.id}
5) EL定义了一个运符的集?/span>
6) 支持条g输出
EL支持java?/span>C中的Q:三元q算Q?/span>
${testQ?/span>expression1Q?/span>expression2}
7) 自动cd转换
支持字符串和数字之间的自动{换?/span>
8) Ig替异?/span>
大多数情况下Q空值或NullPointerExceptions会返回空字符串而不是抛出异常?/span>
面定w性更好?/span>
1. Core支持JSP中的一些基本的操作Q?br />
2. XML processing支持XML文档的处理;
3. I18N capable formatting支持对JSP面的国际化Q?br />
4. Database access (SQL)支持JSPҎ据库的操作?/span>
下节将是EL表达式语a