JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jest页面中使用标签的形式完成业务逻辑等功能。作用:用于简化和替换jsp页面上的java代码,JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库
JSTL五大字库
使用步骤:
1、 导入jstl相关jar包
2、 引入标签库:taglib指令
3、 使用标签
JSTL核心库的使用
包括变量操作,流程控制以及在Jsp页面中访问基于URL资源的相关标签。
例子:
1、<c:out>
<c:out>标签用于输出内容,输出value的值,当value的值为null时输出默认值。escapeXml决定是否转换字符串,设置为true时页面输出为的字符串,若设置为false时页面弹出hello的提示框。
2、<c:catch>
捕获由嵌套在它里面的标签抛出的异常。
3、<c:set>
用于在某个范围(Request、Session、Application等)中设置某个值,或者设置某个对象的属性。
var:指定变量名称
scop:指定变量的作用范围,默认为page
value:待赋给变量的值
target:必须是一个javaBean或Map类型的变量
property:JavaBean的属性名或Map的key
4、<c:remove>
用于删除某个变量或者属性
5、<c:if>
用于条件判断,如果其test属性为true,则显示if标签体内容,如果为false,则不显示标签体内容,一般情况下,test属性值会结合el表达式一起使用,<c:if>标签没有else情况,想要else情况,则可以在定义一个<c:if>标签
<%
List list = new ArrayList();
list.add("aaaa");
request.setAttribute("list", list);
request.setAttribute("number", 3);
%>
<!-- 判断request域中的一个list集合是否为空,如果不为null则显示遍历集合 -->
<c:if test="${not empty list }">
遍历集合....
</c:if>
<br>
<c:if test="${number % 2 !=0 }">
${number}为奇数
</c:if>
<c:if test="${number % 2 ==0 }">
${number}为偶数
</c:if>
6、<c:choose> <c:when> <c:otherwise>
Choose:相当于java代码的switch语句
1、 使用choose标签声明 相当于switch声明
2、 使用when标签做判断 相当于case
3、 使用otherwise标签做其他情况的声明 相当于default
<%
request.setAttribute("number", 6);
%>
<c:choose>
<c:when test="${number == 1}">星期一</c:when>
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:when test="${number == 4}">星期四</c:when>
<c:when test="${number == 5}">星期五</c:when>
<c:when test="${number == 6}">星期六</c:when>
<c:when test="${number == 7}">星期天</c:when>
<c:otherwise>数字输入有误</c:otherwise>
</c:choose>
当输入的数字在when里面没有的,就会执行输出最下数字输入有误
7、<c:forEach>
1、遍历固定次数的循环,如:
for(int i = 0 ; i < 10 ; i++){}
属性:
begin:遍历开始的索引值
end:遍历结束的索引值
var:临时变量
step:索引增长的步长,默认为1
varStatus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
${i} <h3>${s.index}</h3> <h4>${s.count}</h4>
</c:forEach>
2、遍历容器:集合、数组、map
List list;
for(User user : list){}
属性:
Items:容器对象
Var:容器中元素的临时变量
varStatus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
<%
List list = new ArrayList();
list.add("aaaa");
list.add("bbbb");
list.add("cccc");
request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="str" varStatus="s" >
${s.index} ${s.count} ${str}
</c:forEach>
<!-- 结果:0 1 aaaa 1 2 bbbb 2 3 cccc -->
8、<c:forTakens>
将字符串按照指定的分隔符分隔后遍历
delims:分隔符
<c:forTokens items="Zara,nuha,roshy" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
<!-- 结果:Zara nuha roshy -->
9、<c:url>
与<c:param>结合使用构造一个URL地址
value:指定要处理的URL地址
10、<c:import>
类似于jsp:include标签,不但可以导入本地web应用的资源,还可以导入其他web资源
11、<c:redirect>
将客户端请求转向其他资源,等价于jsp内置对象response的sendRedirect方法