EL——表达式语言(Expression Language)
为了在表现层上减少Java代码,JSTL标记库应运而生,EL即是JSTL的基础。
格式:
${所有的EL表达式在这里面}
取值:
普通JSP写法:
session.getValue("name");
EL写法:
${sessionScope.name}
访问JavaBean:
<% student stu=new student(); stu.no="123"; %>
学生编号是:${stu.no}
访问集合:
${集合[序号]}
如:${book[0]}表示集合book中的第一个元素
[ ] . 运算符:
${sessionScope.user.sex};
等价于
String str="sex";
${sessionScope.user[str]};
两种情况[ ]和 . 不能互换:
1、名称中含有特殊字符:
${sessionScope.user["user-sex"]}
不可用
${sessionScope.user.user-sex}
来代替
2、动态取值:
${sessionScope.user[param]},其中param是自定义变量
EL对象:
1、PageScope:page范围
2、requestScope:request范围
3、sessionScope:session范围
4、applicationScope:application范围
若无范围限定则按照page>request>session>application顺序查找
除此之外其他EL对象:
1、pageContext:此JSP的PageContext
2、param:获取单个参数
3、paramValues:获取捆绑数组参数
4、Header:
5、headerValues:
6、cookie:获取cookie的值
7、initParam:获取web.xml中的参数值
EL自动类型转换:
${param.count+20}
相当于
String str=request.getParameter("count");
int count=Intger.parseInt(str_count);
count=count+20;
验证运算符empty:
${empty A}
如果A为null、不存在、空字符串、空数组均返回true,否则返回false
JSTL
首先声明JSP文件所使用的的标签库,同时引入该标签库,并指定标签的前缀。
<% @ taglib prefix="c" uri="http://....../core" %>
prefix表示前缀,习惯上把核心标签库core的前缀定义为c。
core核心标签库:
表达式操作:out、set、remove、catch
流程操作:if、choose、when、otherwise
迭代操作:forEach、forTokens
URL操作:import、param、url、redirect
基本数据操作:
<c:out>:
输出,<c:out value="变量名"></c:out>
<c:set>:
赋值,<c:set var="" value="" scope=""></c:set>
<c:remove>:
删除,<c:remove var="" scope=""></c:remove>
流程控制操作:
<c:if>:
<c:if test="${判断条件}" var="" scope="session">...</c:if>
可选属性var和scope指定var所在的scope
<c:choose>:
<c:forEach>:
全部遍历:
部分遍历指定遍历区间及步长:
部分遍历并输出元素状态:
index:在原集合中是第几个元素
count:在遍历子集中是第几个元素
first:是否是遍历子集中的第一个元素
last:是否是遍历子集中的最后一个元素
<c:forTokens>:
字符串遍历
<c:import>:包含另一JSP页面到本页
<c:url>:得到url地址
<c:redirect>:页面的重定向
<c:param>:向目标页面传递参数