在传统的jsp页面中,使用<% java代码 %>显示数据有许多的弊端。
比如类型转换,需要处理的null,代码参杂。
采用EL,JSTL等就方便了很多。
EL:
实例:
${requestScope.student.address.schoolAddress} 这里是request域
${域对象.域对象中的属性.属性.属性… (一直级联属性)}
EL的操作符:
点操作符: 使用简单方便
[" “]操作符或者[ ’ ’ ]: 功能强大,可以获取特殊符号(。——+;等),可以获取变量值,可以访问数组,可以获取Map对象。
[” reauestScope “][” student “][” address “][” schoolAddress “]…[” “][” “][” "]
JSTL
是比EL更强大,但是eclipse不自带。
1.需要映入jar包(jstl.jar)和辅助jar包(standard.jar)。
2.引入tablib:<%@taglib uri =“http://java.sun.com/jsp/jstl1/core” prefix=“c”>其中prefix=“c"是前缀。
核心标签库:通用标签库,条件标签库,迭代标签库。
通用标签库:<c:set>赋值
①在某个作用域中给变量赋值。
request.setAttribute(” name",“zhangsan”);
==<c:set var=“name” value=“zhangsan” scope=“request”> ; ${requestScope.name}
②可在某个对象的属性赋值。
r
e
q
u
e
s
t
S
c
o
p
e
.
s
t
u
d
e
n
t
.
n
a
m
e
;
<
c
:
s
e
t
t
a
r
g
e
t
=
"
{requestScope.student.name}; <c:set target="
requestScope.student.name;<c:settarget="{requestScope.student}" property=“sname” vaule=“zxs”>;//不能指定scpoe
${requestScope.student.name}
取出:<c: out>非常强大,自带default默认值;(https,加上s代表加密)
remove:删除一个变量,从域中删除。
选择:<c:if test=“条件” scope="" var=“result”>//单选,result为结果域,scope为域
<c:choose>
<c:when test="">内容</c:when>
<c:when test=""></c:when>
<c:when test=""></c:when>
…
<c:otherwise test=""></c:otherwise>
</c:choose>
循环(对应java的两种形式):<c:foreach begin=“0” end=“5” step=“1”>></c:foreach>
<c:foreach var=“name” items="${requestScope.names}"></c:foreach>