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

本文详细介绍了JSTL标签库的使用方法,包括if、for和choose等标签的特性与应用实例,展示了如何利用这些标签简化JSP页面的编程,提升代码的可读性和维护性。

目录


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/corec
国际化标签http://java.sun.com/jsp/jstl/fmtfmt
函数http://java.sun.com/jsp/jstl/functionsfn
数据库(不使用)http://java.sun.com/jsp/jstl/sqlsql
XML(不使用)http://java.sun.com/jsp/jstl/xmlx

核心标签库

1、if标签

跳转到目录

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

  • 属性

属性描述是否必要默认值
test条件
var用于存储条件结果的变量
scopevar属性的作用域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标签

跳转到目录

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

  • 属性
    <c:choose>标签没有属性。
    <c:when>标签只有一个属性。
    <c:otherwise>标签没有属性。

<c:when>的属性

属性描述是否必要默认值
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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值