您的位置:首页 > Web前端 > JavaScript

JSP(三)JSTL表达式

2016-01-29 23:19 615 查看
JSTL是需要下载的:https://jstl.java.net/,然后导入工程文件的lib中。

JSTL分为五类,使用哪一类在jsp页面taglib不一样,包括:Core,XML,I18n,数据库,功能。例如使用Core库:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

prefix="c"就像HelloWorld一样,随意的,但是确是规范。

1.在Core库中的常用的动作指令:

1)out标签:它最后的作用还是输出(赋值到隐式对象JspWriter),之前会对值进行解析运算,和大多说html标签一样它可以有主体内容,也可以没有。

<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>或者<c:out value="value" [escapeXml="{true|false}"]>default Value</c:out>

其中,[]包含的属性在实际使用的时候是可选的,escapeXml表示是否把值中的特殊字符<,>,&等转换成相应的字符实体代码(默认情况下是要的),一般值是使用EL表达式,即${value}。

实例:<c:out value="${sessionScope.value}" default="${applicationScope.value}"/>的意思是如果在session中找不到value那就在application中找value,否则就返回空字符串。

2)set标签:就是将一个值给另一个值,设置后,这个页面后面的代码就可以访问这个值了。

功能一:创建一个限域变量,他的值要嘛现造,要嘛引用其他限域对象的值。

<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>
例如:<c:set var="test1" value="test1value"/>(给新建的变量test1赋值为test1Value。<c:set var="test2" value="${requestScope.test2var}" scope="page"/>(创建一个page范围限域变量test2,并引用request范围的test2Var。)

功能一:设置对象的值。

<c:set target="target" property="property“ value="value"/>
例如:<c:set target="${student}" property="name“ value="yuege"/>(将对象student的name属性设置值为yuege.

3)remove标签:顾名思义就是删除限域变量。

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

例如:删除page范围的job变量,<c:remove var="job" scope="page"]/>

值得注意的是,这里删除的只是job变量,并没有删除page里面的对象,所以job1这个另外的变量也可以job原来引用的对象。

2.在条件式动作指令:

1)if标签:判断是否满足标签的条件,如果满足就执行主题里面的内容。

<c:if  test="condition"  var="varName"  [scope="{page|request|session|application}"]/>或者
<c:if  test="condition"  [var="varName"] [scope="{page|request|session|application}"]>HelloWold!</c:if>


其中var的意思是一个Boolean类型的指,保存条件的正确或者错误,并可以制定scope范围。

例如:<c:if test="${param.username=='yuege' && param.password=='yuege'}">HelloWold!</c:if>表示用户名和密码都对了的话,就显示HelloWorld!

2)choose,when和otherwise标签:

小白的我不常用,略。

3.iterator动作指令(终于到遍历了)

1)forEach标签:可以迭代实现了Collection和Map的对象,Iterator对象,Enumeration对象,普通对象/基本数据类型(8种)的数组。

<c: forEach [var="varName"] begin="begin" end="end" step="step">
Content
</c:forEach >(对Content的重复)
<c: forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
Content
</c:forEach >(对Content的重复)
例如:
<c: forEach var="x" begin="1" end="5">
<c:out value="${x}"/>
</c:forEach >(打印1,2,3,4,5)

<c:forEach items="${requestScope.students}" var="student">
${student}
</c:forEach >(对requestScope范围的student的遍历)
附加属性,可以增加一个叫varStatus来判断此次迭代的次数,有什么用?可以制造出条纹状的表格,更美观等等。

例如:

<table>
<tr>
<td>name</td>
</tr>
<c:forEach items="${requestScope.students}" var="student" varStatus=“status”>
<c:if  test="${status.count%2 == 0}">
<tr style="某种样式1“>
</c:if>
<c:if  test="${status.count%2 != 0}">
<tr style="某种样式2“>
</c:if>
<td>${student.name}</td>
</c:forEach >
</table>(单数深色,双数无色)


2)forTockens标签:

略。

4.格式化动作指令<fmt:..............

略。

5.函数

略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: