由于EL表达式与JSP标准动作没有办法满足我们所有的要求,所以要求学习JSTL。
很多人已经写了非常多的标签,自己也可以写。
TAGLIB指令的语法和语义,<%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core"%>
明确JSTL标记的用法:
1.几个核心标记:上面的过程中,使用标准记<jsp:setProperty>的时候,没有办法对Map设置值。
两种设置:var设置,用于设置属性变量,在value或者体为空的话,会删除var指向的对象。
没有体的设置,<c:set var="tempName" scope='request" value="hello"/>.
有体的设置,<c:serr var="tempObject" scope="request">obj&obj_1&obj_2</c:set>
target设置,设置Bean或者Map值,
没体的设置 <c:set target="${dog}" property="name" value="Hello">
有体的设置 <c:set target="${dog}" property="name">${personList[0].name}</c:set>
2.分支标记: c:if标记,test=${逻辑表达式},缺陷,如果使用else就没有办法支持了,只能借助c:choose
c:choose标记,c:when,这和java的switch是不一样的,switch是fall-through的,而c:when不是,只能落入单入单个分支中。
c:otherwise,这三个标签要在一起使用。
3.循环标记:c:forEach标记
items属性,将要被遍历的集合。
var 为被遍历的集合的元素变量起一个名字。
varStatus varStatus.count提供当前迭代计数器的当前值
step 步进选项,就如同for()循环中的i+=进步
遍历范围 begin,集合被遍历看是的下标
end,集合被遍历结束的下标
必须可以嵌套的 ex.)外层var="innerList" items="outCollection", ex.)内层var="innerObject" items="innrList"
与URL相关的标签。
其它扩展 自定义标签。
JSP的注释,显示注释<!--注释内容--> 符合XML的注释,会发送到浏览器
隐式注释<%--注释内容--%> JSP的注释,不会发送到浏览器