JSTL标签
1.什么是JSTL标签
JSTL全名JavaServer Pages Tag Library,是JSP标准标签库,由Apache组织提供的开源的免费jsp标签
2.作用
用于简化和替换jsp页面上的java代码
3.如何使用
1)导入相关JSTL相关jar包:
2)通过taglib指令引入标签库
<%--引入标签库,c为标签库别名--%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
4.JSTL的常用标签
1)if标签:相当于Java代码的if语句,但没有else的情况
<c:if test="表达式"></c:if>
test属性是必须属性接收boolean表达式,当表达式为true时,显示if标签体内容,为false时不显示
一般情况下,test属性的值会结合el表达式一起使用
if标签没有else情况,想要else情况可以再定义一个if标签
案例:
<%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--引入标签库,c为标签库别名--%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>IF标签</title> </head> <body> <%--test属性是必须属性接收boolean表达式, **当表达式为true时,显示if标签体内容,为false时不显示 **一般情况下,test属性的值会结合el表达式一起使用 **if标签没有else情况,想要else情况可以再定义一个if标签 --%> <c:if test="true"> <p> test属性是必须属性,接收boolean表达式, 当表达式为true时,显示if标签体内容,为false时不显示 </p> </c:if> <% // 判断request域中list集合是否为空,不为空显示遍历集合 List list=new ArrayList(); //添加元素进集合 list.add('a'); list.add('b'); //将集合存放到request域中 request.setAttribute("list",list); //将奇数number添加到request中 request.setAttribute("number",9); %> <%--使用if标签以及EL表达式判断list是否为空--%> <c:if test="${not empty list}"> 遍历集合 </c:if><br>
<%--判断number是否为奇数,是的话输出到页面上--%> <c:if test="${number%2!=0}"> ${number}为奇数 </c:if>
</body> </html>
运行结果:

2)choose标签:相当于Java的switch语句
结合when标签(case语句)和otherwise标签(default语句)使用
案例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入标签库,c做标签库别名--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>choose标签</title>
</head>
<body>
    <%--
        数字编号对应星期几案例:
            1.在域中存储数字
            2.使用choose标签取出数字(Java的switch)
            3.使用when标签做数字判断(Java的case)
            4.使用otherwise标签做其他情况的判断(Java的default)
    --%>
    <%
        //在request域中存储一数字
        request.setAttribute("date",5);
    %>
    <%--判断为星期几并输出到页面--%>
    <c:choose>
        <c:when test="${date==1}">星期一</c:when>
        <c:when test="${date==2}">星期二</c:when>
        <c:when test="${date==3}">星期三</c:when>
        <c:when test="${date==4}">星期四</c:when>
        <c:when test="${date==5}">星期五</c:when>
        <c:when test="${date==6}">星期六</c:when>
        <c:when test="${date==7}">星期七</c:when>
        <c:otherwise>输入有误</c:otherwise>
    </c:choose>
</body>
</html>
运行结果:

3)forEach标签:相当于Java的for语句
a.用于完成重复的操作:
属性:begin:开始值
end: 结束值
var: 临时变量
step: 步长
varStatus:循环状态对象
varStatus.index:容器中元素的索引
varStatus.count:循环次数
b.用于遍历容器:
属性:item:容器对象
var:临时变量
varStatus:循环状态对象
varStatus.index:容器中元素的索引
varStatus.count:循环次数
案例:
<%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>foreach标签</title> </head> <body> <h3>重复操作属性</h3> <%-- for(int i=1;i<=10;i+=2){ out.write(i); } --%> <c:forEach begin="1" end="10" var="i" varStatus="s" step="2" > ${i} ${s.index} ${s.count}<br> </c:forEach> <% //定义list对象 List list=new ArrayList<>(); list.add('a'); list.add('b'); list.add('c'); list.add('d'); request.setAttribute("list",list); %> <h3>遍历容器</h3> <% for(Object c:list){ out.print(c); } %> <c:forEach items="${list}" var="c" varStatus="s"> ${c} ${s.index} ${s.count}<br> </c:forEach> </body> </html>
运行结果:

5.JSTL练习
需求如下:在request域中有一个存有User对象的List集合,需要使用jsp+el将list集合中的数据展示到jsp页面的表格table中
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="java.util.ArrayList" %> <%@ page import="www.lin.domain.User" %> <%@ page import="java.util.List" %> <%@ page import="www.lin.domain.Student" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>jstltest</title> </head> <body> <% //创建list集合 List<Student> list=new ArrayList<>(); //创建Student对象 Student st1=new Student("0001","张三"); Student st2=new Student("0002","李四"); Student st3=new Student("0003","王五"); //将Student对象添加进list集合 list.add(st1); list.add(st2); list.add(st3); //将list集合添加进request域中 request.setAttribute("list",list); %> <%--生成表格--%> <table border="1px" align="center"> <tr> <th>编号</th> <th>姓名</th> <th>学号</th> </tr> <%-- 循环遍历集合,将数据显示到表格中 --%> <c:forEach items="${requestScope.list}" var="stu" varStatus="s"> <tr> <%--编号从1开始--%> <td>${s.count}</td> <%-- 获取名字--%> <td>${stu.name}</td> <%--获取学号--%> <td>${stu.id}</td> </tr> </c:forEach> </table> </body> </html>
运行结果:

案例改进,生成隔行变色效果,可使用if标签实现
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="java.util.ArrayList" %> <%@ page import="www.lin.domain.User" %> <%@ page import="java.util.List" %> <%@ page import="www.lin.domain.Student" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>jstltest</title> </head> <body> <% //创建list集合 List<Student> list=new ArrayList<>(); //创建Student对象 Student st1=new Student("0001","张三"); Student st2=new Student("0002","李四"); Student st3=new Student("0003","王五"); //将Student对象添加进list集合 list.add(st1); list.add(st2); list.add(st3); //将list集合添加进request域中 request.setAttribute("list",list); %> <%--生成表格--%> <table border="1px" align="center" width="500px" > <tr > <th>编号</th> <th>姓名</th> <th>学号</th> </tr> <%-- 循环遍历集合,将数据显示到表格中 --%> <c:forEach items="${requestScope.list}" var="stu" varStatus="s"> <%--通过if标签和el表达式判断是否为偶数行--%> <c:if test="${s.count%2==0}"> <tr bgcolor="#deb887"> <%--编号从1开始--%> <td>${s.count}</td> <%-- 获取名字--%> <td>${stu.name}</td> <%--获取学号--%> <td>${stu.id}</td> </tr> </c:if> <%--通过if标签和el表达式判断是否为奇数行--%> <c:if test="${s.count%2!=0}"> <tr bgcolor="#d2691e"> <%--编号从1开始--%> <td>${s.count}</td> <%-- 获取名字--%> <td>${stu.name}</td> <%--获取学号--%> <td>${stu.id}</td> </tr> </c:if> </c:forEach> </table> </body> </html>
运行结果:

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号