JSTL标签库——概述、if标签、for标签等

目录

  • JSTL标签库概述
  • if标签
  • for标签
  • choose、when、otherwise标签

JSTL标签库概述

跳转到目录
JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。

1.导入jstl相关jar包
2.引入标签库:taglib指令引入:<%@ taglib %>
3.使用标签

JSTL由五个不同功能的标签库组成。

功能范围 URI 前缀
核心标签库–重点 http://java.sun.com/jsp/jstl/core c
国际化标签 http://java.sun.com/jsp/jstl/fmt fmt
函数 http://java.sun.com/jsp/jstl/functions fn
数据库(不使用) http://java.sun.com/jsp/jstl/sql sql
XML(不使用) http://java.sun.com/jsp/jstl/xml x

核心标签库

1、if标签

跳转到目录

  • 作用
    <c:if>标签 判断表达式的值,如果表达式的值为 true 则执行其主体内容。

  • 属性

属性 描述 是否必要 默认值
test 条件
var 用于存储条件结果的变量
scope var属性的作用域 page
@WebServlet("/ifTag")
public class ifServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("num");
        request.setAttribute("num", username);

        request.getRequestDispatcher("/jstl/if.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

<head>
    <title>JSTL标签库_if标签</title>
</head>
<body>

    <c:if test="${num%2==0}">
        num 为偶数!
    </c:if>

    <c:if test="${num%2!=0}" var="a" scope="page">
        num 为奇数!
    </c:if>

    <%-- 输出page作用域中的a对象 --%>
    <c:out value="${ pageScope.a }"></c:out>

</body>

2、for标签

跳转到目录

  • 作用
    <c:forEach>起到java代码的for循环作用,可以迭代一个集合中的对象-可以是数组,也可以是list,也可以是map对象。

  • 属性

属性 描述 是否必要 默认值
test 条件
items 要被循环的数据集合-可以使用el表达式
begin 开始的索引(0=第一个元素,1=第二个元素) 0
end 最后一个索引(0=第一个元素,1=第二个元素) Last element
step 每一次迭代的步长 1
var 代表当前条目的变量名称
varStatus 代表循环状态的变量名称

varStatus状态:
作用:指定保存迭代状态的对象的名字,该变量引用的是一个LoopTagStatus类型的对象
通过该对象可以获得一些遍历的状态,如下:

  • begin 获取begin属性里的值
  • end 获取end属性里的值
  • count 获取当前遍历的个数
  • index 获取当前索引值
  • first 获取是否是第一个元素
  • last 获取是否是最后一个元素
  • current 获取当前遍历的元素对象
@WebServlet("/forTag")
public class ForServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 自己在url中拼写参数 ?num=28
        String num = request.getParameter("num");
        request.setAttribute("num", num);

        request.getRequestDispatcher("/jstl/for.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSTL标签库_for标签</title>
</head>
<body>

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

</body>
</html>
@WebServlet("/for2Tag")
public class For2Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ArrayList<String> al = new ArrayList();
        al.add("Tom");
        al.add("Lucy");
        al.add("Hello");

        request.setAttribute("al", al);
        
        ArrayList<User> al2 = new ArrayList<>();
        al2.add(new User("yasu", "123"));
        al2.add(new User("dong", "531"));
        al2.add(new User("tian", "232"));
        request.setAttribute("al2", al2);

        request.getRequestDispatcher("/jstl/for2.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

    <!--增强for 遍历 集合 值<String>-->
    <c:forEach items="${al}" var="str">
        ${str}<br>
    </c:forEach>

    <!--增强for 遍历 集合中的 <User>-->
    <c:forEach items="${al2}" var="user" varStatus="vs">
        ${vs.index}---${user.name} --- ${user.pwd} <br>
    </c:forEach>

3、choose、when、otherwise标签

跳转到目录

  • 作用
    标签与Java switch语句的功能一样,用于在众多选项中做出选择。
    switch语句中有case,而标签中对应有,switch语句中有default,而标签中有

  • 属性
    标签没有属性。
    标签只有一个属性。
    标签没有属性。

的属性

属性 描述 是否必要 默认值
test 条件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSTL标签库_choose标签</title>
</head>
<body>

    <%
        pageContext.setAttribute("score", 70);
    %>

    <%--开始判断--%>
    <c:choose>
<%--        如果成绩大于等于90 --%>
        <c:when test="${pageScope.score >= 90}">
            成绩为A
        </c:when>

<%--        大于等于80--%>
        <c:when test="${score >= 80}">
            成绩为B
        </c:when>

<%--        大于等于70--%>
        <c:when test="${score >= 70}">
            成绩为C
        </c:when>

<%--        其他情况--%>
        <c:otherwise>
            成绩为E, 不及格!
        </c:otherwise>
    </c:choose>

</body>
</html>

你可能感兴趣的:(JavaWeb)