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的情况

if test="表达式">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" %>


    IF标签


<%--test属性是必须属性接收boolean表达式,
        **当表达式为true时,显示if标签体内容,为false时不显示
        **一般情况下,test属性的值会结合el表达式一起使用
        **if标签没有else情况,想要else情况可以再定义一个if标签
     --%>
if test="true">
    

test属性是必须属性,接收boolean表达式, 当表达式为true时,显示if标签体内容,为false时不显示

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是否为空--%> if test="${not empty list}"> 遍历集合 if>

<%--判断number是否为奇数,是的话输出到页面上--%> if test="${number%2!=0}"> ${number}为奇数 if>

运行结果:

 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" %>


    choose标签


    <%--
        数字编号对应星期几案例:
            1.在域中存储数字
            2.使用choose标签取出数字(Java的switch)
            3.使用when标签做数字判断(Java的case)
            4.使用otherwise标签做其他情况的判断(Java的default)
    --%>
    <%
        //在request域中存储一数字
        request.setAttribute("date",5);
    %>
    <%--判断为星期几并输出到页面--%>
    
        星期一
        星期二
        星期三
        星期四
        星期五
        星期六
        星期七
        输入有误
    

运行结果:

 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" %>


    foreach标签


    

重复操作属性

<%-- for(int i=1;i<=10;i+=2){ out.write(i); } --%> ${i} ${s.index} ${s.count}
<% //定义list对象 List list=new ArrayList<>(); list.add('a'); list.add('b'); list.add('c'); list.add('d'); request.setAttribute("list",list); %>

遍历容器

<% for(Object c:list){ out.print(c); } %> ${c} ${s.index} ${s.count}

运行结果:

 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" %>


    jstltest


<%
    //创建list集合
    List 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);
%>
    <%--生成表格--%>
    
        <%--   循环遍历集合,将数据显示到表格中     --%>
        
            
                <%--编号从1开始--%>
                
                <%-- 获取名字--%>
                
                <%--获取学号--%>
                
编号 姓名 学号
${s.count}${stu.name}${stu.id}

运行结果:

 案例改进,生成隔行变色效果,可使用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" %>


    jstltest


<%
    //创建list集合
    List 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);
%>
    <%--生成表格--%>
    
        <%--   循环遍历集合,将数据显示到表格中     --%>
        
            <%--通过if标签和el表达式判断是否为偶数行--%>
            if test="${s.count%2==0}">
                
                        <%--编号从1开始--%>
                    
                        <%-- 获取名字--%>
                    
                        <%--获取学号--%>
                    if>
            <%--通过if标签和el表达式判断是否为奇数行--%>
            if test="${s.count%2!=0}">
                
                        <%--编号从1开始--%>
                    
                        <%-- 获取名字--%>
                    
                        <%--获取学号--%>
                    if>
        
编号 姓名 学号
${s.count}${stu.name}${stu.id}
${s.count}${stu.name}${stu.id}

运行结果: