为什么要使用JSTL和EL表达式?
我们下面通过一个表格展示部门员工信息,对比看JSP和JSTL的不同。
同样是循环生成一个table数据,使用传统jsp:
同样是循环生成一个table数据,使用JSTL方式:
使用宽松的类型转换,简化对变量和对象的访问。
EL的语法结构为
表
达
式
,
比
如
说
{表达式} ,比如说
表达式,比如说{emp.name}
以上变量emp会遵循从page、request、session、application中依次寻找,
如果找到,便不再继续寻找;如果没有找到,则返回null
也可以给变量制定寻找的范围,与以上四个内置对象相对应的属性范围在EL中的书写格式为:pageScope,requestScope,sessionScope,applicationScope
EL表达式中也可以使用算术运算符、关系运算符、逻辑运算符。
例如:
${4+5} ${3<4} ${3!=4&&5>6}
EL的使用:
以上EL其实就是等同于<%=request.getAttribute(“age”)%>。但如果这样:${sessionScope.age},从session范围中,便获取不到。
EL表达式在输出信息方面简化了JSP的复杂度,但是它无法控制流程、无法处理复杂的逻辑。是否有一种技术,可以不必书写Java代码,又能控制流程呢?
JSTL提供了一种不需要嵌入Java代码片段,就可以开发复杂显示页面的途径
JSTL提供了通用、条件、循环、格式化、数据库操作等标签
使用JSTL标签,要在指令上加上如下标签指令:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
JSTL标签——通用标签
<c:out>
作用是做输出,功能类似于<%=变量%>、
变
量
语
法
为
:
<
c
:
o
u
t
v
a
l
u
e
=
“
字
符
串
常
量
”
/
>
或
<
c
:
o
u
t
v
a
l
u
e
=
“
{变量} 语法为:<c:out value= “字符串常量”/>或<c:out value= “
变量语法为:<c:outvalue=“字符串常量”/>或<c:outvalue=“{变量}” />
<c:set>
作用是定义变量,将变量的值存在某个JSP范围中,或者是JavaBean的属性中。
<c:remove>
作用与set相反,从某个范围中移除一个变量。
JSTL标签——条件标签
<c:if>
作用是用来判断
<c:if test= “判断条件”>
</c:if>
JSTL标签——迭代标签
<c:forEach>
作用是对于包含多个对象的集合进行迭代,跟Java中的逐元循环相似
<c:forEach [var= “当前元素”] items= “集合”>
</c:forEach>
JSTL标签——格式化
<fmt:formatDate value="${日期}" pattern=“yyyy-MM-dd” />
<fmt:parseDate value="日期字符串"pattern=“yyyy/MM/dd”/>
JSTL标签和EL表达式总结: