当前位置:编程学习 > JS >>

JSTL和EL介绍

JSTL规范介绍
------------------------------------------------
JSTL:
* JSTL即JSP Standard Tag Library的缩写
* 一些常用的JSP标签
* 和MVC框架结合使用很方便,如果struts、spring mvc
* 不是JSP 1.2,2.0,2.1规范的一部分,需要单独下载。下表是servlet、jsp、jstl、j2ee规范的对应关系:
Servlet Version          JSP Version            JSTL  Version          Java EE Version
2.5                               2.1                             1.2                             5
2.4                               2.0                             1.1                            1.4
2.3                               1.2                             1.0                            1.2

EL:
* EL即JSP Expression Language(JSP表达式语言)
* EL来源于JSTL,jsp 2.0、2.1中已实现了EL规范

注:本文是按照jstl1.2的规范来介绍的,sql和xml标签未做介绍!

Core Tags(核心标签)
------------------------------------------------
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:out>
语法:
<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”] />

描述:
输出一个表达式的值,和 <%= ... > scriptlet类似,但在c:out中可以用'.'访问对象属性值。

例子:
<c:out value="${'<tag> , &'}"/>  >>>>>  <tag> , &
<c:out value="${customer.address.street}"/>==${customer.address.street}(JSP2.0/2.1)  >>>>>  street的值
EL表达式的取值默认顺序:pageScope  requestScope  sessionScope  applicationScope
<c:out value="${requestScope.foo}"/>
<c:out value="${requestScope['foo']}"/>
<c:out value="${param['foo']}"/>
<c:out value="${param['foo']}"/>
<c:out value="${paramValues['foo']}"/>


<c:set>
语法:
<c:set value=”value” var=”varName” [scope=”{ page|request|session|application}”]/>
<c:set value=”value” target=”target” property=”propertyName”/>

描述:
将表达式计算出来的值赋值给某一变量或map中的对象

例子:
<c:set var="foo" value="${foo2 * 2}" scope="page"/>  scope="{page|request|session|application}"
<c:set target="${cust.address}" property="city" value="wuhan..."/>
<c:set target="${myMap}" property="color" value="red"/>

<c:remove>
语法:
<c:remove var=”varName” [scope=”{page|request|session|application}”]/>

描述:
从不同的scope中删除某变量,没有指定scope,则从PageContext中删除对象

例子:
<c:remove var=”myVar”/>

<c:catch>
语法:
<c:catch [var=”varName”]>
nested actions
</c:catch>

描述:
捕获标签内部的java.lang.Throwable

例子:
<c:catch var ="catchException">
   <% int x = 5/0;%>
</c:catch>
<c:if test = "${catchException != null}">
   <p>The exception is : ${catchException} <br />
   There is an exception: ${catchException.message}</p>
</c:if>

<c:if>
语法:
<c:if test=”testCondition ” [var=”varName”] [scope=”{page|request|session|application}”]>
body content
</c:if>

描述:
如果表达式判断为true,则会执行标签体内的内容

例子:
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
   <p>My salary is: <c:out value="${salary}"/><p>
</c:if>

<c:choose>,<c:when>,<c:otherwise>
和switch类似
<c:choose>
    <c:when test="${salary <= 0}">
       Salary is very low to survive.
    </c:when>
    <c:when test="${salary > 1000}">
        Salary is very good.
    </c:when>
    <c:otherwise>
        No comment sir...
    </c:otherwise>
</c:choose>

<c:import>,<c:param>
语法:
<c:import url=”url” [context=”context”] [var=”varName”] [scope=”{page|request|session|application}”] [charEncoding=”charEncoding”]>
optional body content for <c:param name=”name” value=”value”/> subtags
</c:import>

描述:
<c:import>和<jsp:include>动作类似,但是c:import可以从其他的站点或FTP获取资源

例子:
<c:import var="data" url="http://www.tutorialspoint.com"/>
<c:out value="${data}"/>

<c:forEach>
语法:
<c:forEach [var=”varName”] items=”collection” [varStatus=”varStatusName ”] [begin=” begin”] [end=”end ”] [step=”step”]>
body content
</c:forEach>
<c:forEach [var=”varName”] [varStatus=”varStatusName ”] begin=”begin” end=”end” [step=”step”]>
body content
</c:forEach>

描述:
根据给定的集合变量,循环输出标签体的信息。或者将标签体的信息循环指定次数。
status变量包含属性
current:当前这次迭代的(集合中的)项
index:当前这次迭代从 0 开始的迭代索引
count:当前这次迭代从 1 开始的迭代计数
first:用来表明当前这轮迭代是否为第一次迭代的标志
last:用来表明当前这轮迭代是否为最后一次迭代的标志
begin:begin属性值
end:end属性值
step:step属性值

例子:
<c:forEach var="i" begin="1" end="5">
   It

补充:Web开发 , Jsp ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,