JSTL实战二之基础

JSTL实战二之基础

一、JSTL的灵感
JSTL的设计灵感来自JavaScript和XPath
WEB编程基于http,而http是简单的协议,所有的数据以字符形式提交,而java是一种强类型的语言,在WEB表现层更需要一种象JavaScript一样弱类型的语言。
而为了兼容jspx,JSTL标签的很多形式会看到XPath的影子,如<c:choose>,刚用JSTL的时候还抱怨JSTL只有

< c:if test ='${expr}'>
</c:if >


< c:choose >
< c:when test ='${expr}'>
</c:when >
< c:otherwise >
< c:when test ='${expr}'>
</c:when >
< c:otherwise >
</ c:otherwise >
</ c:choose >


为什么不来个形如
<c:if test='${expr}'>
<c:else>
</c:if>
之类的东西。

就连在表示字符串时可用单引号和双引号也和javasrcipt惊人的一致

二、数据类型
和javascript基本一致,分为
字符型,用得最多
整数,不带小数点的
浮点数,带小数点的
布尔值,两个值true和false
null null,只是没有象javascript的undefined
数据类型非常简单,类型转换也如人所愿,如null在输出时会自动输出为空字符串,而不是用java时输出恼人的null

三、运算符
. 访问bean和map
[] 访问数组或List,也可用此访问不能用.存取的map或bean,这一点和javascript又是一致,如 map x中有个key叫com.company,此时不能用.存取,可以用x['com.company']
()
? : 三目运算符也是支持的,这样可以写出简洁的表达式
+
-
*
/ 或div
% 或mod
== 或 eq
!= 或 ne
< 或 lt
> 或 gt
<= 或 le
>= 或 ge
&& 或 and
|| 或 or
! 或 not
empty 强大的功能,可以判断一些类型为null或空
fn:funcName()

因为在XML中"<" ">"都是要转化的,所以在jsp中使用时尽量用“ 或 ”字符后面的运算方式

WEB在于表现,所有的东西都要表现为字符,复杂的逻辑在java在分层模块中解决,表现层中就让java退居二级,类javascript的JSTL完全能够胜任

你可能感兴趣的:(jstl)