JSTL标签

概述

  1. 概念:JavaServer Pages Tag Library JSP标准标签库
    • 是由Apache组织提供的开源的免费的 jsp 标签 <标签>
  2. 作用:用于简化和替换 jsp 页面上的 java 代码
  3. 使用步骤:
    1. 导入 jstl 相关的 jar 包:jstl-1.2.jarstandard-1.1.2.jar
    2. 引入标签库:taglib指令:<%@ taglib prefix="" ="" %>
    3. 使用标签

常用的JSTL标签

  1. if:相当于 java 代码的 if 语句

    1. 属性:
      • test必须属性,接受 boolean 表达式
        • 如果表达式为 true,则显示 if 标签体的内容
        • 如果表达式为 false,则不显示 if 标签体的内容
        • 一般情况下,test 属性值会结合 el 表达式一起使用
    2. 注意:
      • c:if 标签没有else情况,想要else情况,则可以再定义一个 c:if标签
  2. choose:相当于 java 代码的 switch 语句

    1. 使用choose标签取出数据 相当于 switch 的声明
    2. 使用when标签做判断 相当于 case
    3. 使用otherwise标签做其他情况的声明 相当于 default
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>choose标签</title>
</head>
<body>
<%--
    完成数字编号对应星期几的案例
        1. 域中存储数字编号
        2. 使用choose标签取出数据              相当于 switch 的声明
        3. 使用when标签做判断                  相当于 case
        4. 使用otherwise标签做其他情况的声明    相当于 default
--%>
<%
    request.setAttribute("number", 12);
%>

<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>
</body>
</html>
  1. foreach:相当于java代码的for语句
    1. 完成重复的操作
    2. 遍历容器
  • 示例
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>foreach标签</title>
</head>
<body>
<%--
    foreach:相当于java代码的for语句
    1. 完成重复的操作
        for(int i = 0; i < 10; i++) {

        }
        * 属性:
            begin:开始值
            end:结束值
            var:临时变量
            step:步长
            varStatus:循环状态对象
                index:容器中元素的索引,从0开始
                count:循环次数,从1开始
    2. 遍历容器
        List<User> list;
        for (User user:list) {

        }
        * 属性:
            items:容器对象
            var:容器中元素的临时变量
            varStatus:循环状态对象
                index:容器中元素的索引,从0开始
                count:循环次数,从1开始
--%>

<c:forEach begin="1" end="10" var="i" step="1">
    ${i} <br/>
</c:forEach>
<hr/>

<%
    List list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list", list);

%>
<c:forEach items="${list}" var="str" varStatus="s">
   ${s.index} ${s.count} ${str} <br/>
</c:forEach>

</body>
</html>

JSTL练习

<%@ page import="com.my.domain.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>jstl练习</title>
</head>
<body>

<%
    /*
        需求:
            在request域中用List集合存储一些User对象。
            需要使用jstl+el将List集合数据展示到jsp页面的表格table中
     */
    List<User> list = new ArrayList<>();
    list.add(new User("张三", 20, new Date()));
    list.add(new User("李四", 24, new Date()));
    list.add(new User("王五 ", 23, new Date()));

    request.setAttribute("list", list);
%>

<table border="1" align="center" width="500">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>生日</th>
    </tr>
    <%--展示数据--%>
    <c:forEach items="${list}" var="user" varStatus="s">
        <c:if test="${s.count % 2 == 0}">
            <tr bgcolor="red">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birStr}</td>
            </tr>
        </c:if>

        <c:if test="${s.count % 2 != 0}">
            <tr bgcolor="green">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birStr}</td>
            </tr>
        </c:if>
    </c:forEach>
</table>

</body>
</html>

原文地址:https://www.cnblogs.com/rainszj/p/12188875.html