EL 和 JSTL 笔记
一、 EL表达式:
1. 常见用法${表达式},如果里面是javabean,则直接写属性名;也可以是判断表达式.
2.EL的参数: param, paramvalues. e.g:${user[param.c] }
3. empty:
<1>.空的集合等,"",null都是empty为true, e.g:${empty ""}==true
4. JavaBean的嵌套:嵌套的JavaBean中注意el的用法,e.g: ${user.addr.street}
5. 如图:
二、 JSTL:
1. 配置:
<1>. myeclipse集成了jstl,所以不用配置,只需要在jsp页面指明url,加入以下语句即可:
<%@ taglib prefix=”c” uri=” http://java.sun.com/jsp/jstl/core” %>
<2>. Eclipse没有实现jstl插件,所以需要配置,配置方法如:
【1】、jstl1.0或以下的版本:
需要将jstl.jar和standard.jar包放入WEB-INF\lib下
在WEB-INF文件夹下放入所用到得.tld文件
在web.xml文件中配置taglib信息
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/tlds/c-rt.tld</taglib-location>
</taglib>
</jsp-config>
在jsp页面中使用<%@ taglibprefix="c" uri="http://java.sun.com/jstl/core"%>
【2】、对于jstl-1.1以上的版本:
JSTL1.1以上的版本只用在lib中加入下载的jar包(jstl.jar),并在JSP页面头部加上这样一句话:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>,用来指明jar包的URL,
并且,在Web.xml文件中不用做任何配置。
注意:
<1>、如果servlet是2.4版本以上(包含2.4)的则可以直接使用,如果是其他版本的话,jsp的属性isELIgnored默认值为true,页面对el表达式不计算,所以要使用jstl的话,则需要使用isELIgnored="false"属性.如:<%@page isELIgnored="false"%>
<2>、如何查看jsp和servlet版本可以参见如下方式:tomcat的lib目录下有两个jar文件,分别名为jsp-api.jar和servlet-api.jar。解压这两个文件,用Notepad++之类的软件打开在其中的Meta-Info文件夹下的MANIFEST.MF文件,可以从Specification-Version看出其版本。
2. 使用:
<1>. 简单用法:(不常见):
(1) <c:out value=”EL” default=”” escapeXML=”true|false”></c:out>
<!—default: value为空时输出default内容 -->
(2) <c:set var=”a” value=”new User()” scope=”request|session”></c:set>
(3) <c:set var=”a”> <!-- 表示将set中间的两个<h2>设为value -->
<h2>good goodstudy</h2>
<h2>day day up !</h2>
<c:set>
(4) <c:remove var=”a”></c:remove> <!-- 表示在作用域里删除a的值 -->
<2>. 重要用法:(很重要):
(1). <c:if test=”EL” >
<h2>满足test的EL表达式时执行</h2>
</c:if>
(2). < c:choose>
<c:when test=”EL”>
<h2>执行第一行</h2>
</c:when>
<c:when test=”EL”>
<h2>执行第二行</h2>
</c:when>
<c:otherwise>
<h2>执行第三行</h2>
</c:otherwise>
</c:choose>
(3). <c:forEach items=”${user }” var=”temp” varStatus=”status”
begin=”3” end=”list.size()” step=”1”>
<c:if test=”${ status.index==0}”>
第一个:
</c:if>
<c:if test=”{ status.first }”>
第一个:
</c:if>
<c:if test=”{ status.last }”>
最后一个:
</c:if>
${status.count}
${temp}
</c:forEach>
<c:forEach>标签属性介绍:
Ø Items : 值是作用域中的key.
Ø var : 相当于for循环中的i变量.
Ø varStatus : var的相关属性.
Ø begin : 相当于i变量的初始值,默认值0,例如begin=”1” à int i=1;
Ø end : 相当于i变量的最大值,默认值为items最大值,例如end=”list.size()” à i<list.size();
Ø step : 步长,默认值为1,相当于i++,例如step=”1” à i++;