JSTL标签库

一、什么是JSTL标签库

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

1. 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

2. 在jsp标签库中使用taglib指令引入标签库

  • CORE 标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • XML 标签库
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> 
  • FMT 标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
  • SQL 标签库
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> ```
  • FUNCTIONS 标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/f

二、JSTL标签库的使用步骤

1. 先导入jar包

JSTL标签库

2. 使用tahlib指令引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

三、core核心库使用

1. <c:set/>

	<c:set scope="session" var="abc" value="abcValue"/>
    ${sessionScope.abc}<br>
  • set 标签可以往域中保存数据
  • 域对象.setAttribute(key,value)
  1. scope 属性设置保存到哪个域
    page 表示 PageContext 域(默认值)
    request 表示 Request 域
    session 表示 Session 域
    application 表示 ServletContext 域
  2. var 属性设置 key 是多少
  3. value 属性设置值

2. <c:if />

	<c:if test="${5==5}">
        <h1>5等于5</h1>
    </c:if>
    <c:if test="${5!=5}">
        <h1>5不等于5</h1>
    </c:if>
  • 运行tomcat
    JSTL标签库
  • if 标签用来做 if 判断
  1. test 属性表示判断的条件(使用 EL 表达式输出)

3. <c:choose> <c:when> <c:otherwise>标签

	<% 
		request.setAttribute("height", 180); 
	%>
    <c:choose>
        <c:when test="${ requestScope.height > 190 }">
            <h2>小巨人</h2>
        </c:when>
        <c:when test="${ requestScope.height > 180 }">
            <h2>很高</h2>
        </c:when>
        <c:when test="${ requestScope.height > 170 }">
            <h2>还可以</h2>
        </c:when>
        <c:otherwise>
            <c:choose>
                <c:when test="${requestScope.height > 160}">
                    <h3>大于 160</h3>
                </c:when>
                <c:when test="${requestScope.height > 150}">
                    <h3>大于 150</h3>
                </c:when>
                <c:when test="${requestScope.height > 140}">
                    <h3>大于 140</h3>
                </c:when>
                <c:otherwise>
                    其他小于 140
                </c:otherwise>
            </c:choose>
        </c:otherwise>
    </c:choose>
  • 运行tomcat
    JSTL标签库

设置不同的height值,会输出不同的结果

  • 多路判断,跟 switch … case … default 非常接近
  1. choose 标签开始选择判断
  2. when 标签表示每一种判断情况
    test 属性表示当前这种判断情况的值
  3. otherwise 标签表示剩下的情况
  • <c:choose> <c:when> <c:otherwise>标签使用时需要注意的点
  1. 标签里不能使用 html 注释,要使用 jsp 注释
  2. when 标签的父标签一定要是 choose 标签

4. <c:forEach />

4.1 遍历1到10

 <table border="1">
        <c:forEach begin="1" end="10" var="i">
            <p>第${i}行</p>
        </c:forEach>
    </table>

4.2 遍历Object

	<%
        request.setAttribute("arr", new String[]{"13772193120","13778150254","18600000000"});
    %>
    <c:forEach items="${ requestScope.arr }" var="item">
        ${ item } <br>
    </c:forEach>

4.3 遍历Map

	<%
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        request.setAttribute("map", map);
    %>

    <c:forEach items="${requestScope.map}" var="entry">
        <p>${entry.key}:${entry.value}</p>
    </c:forEach>

4.4 遍历List

<%
        List<Student> studentList = new ArrayList<Student>();
        for (int i = 1; i <= 10; i++) {
            studentList.add(new Student(i,"username"+i,18+i,"男"));
        }
        request.setAttribute("stus", studentList);
    %>
    <table>
        <tr>
            <th>编号</th>
            <th>用户名</th>
            <th>年龄</th>
            <th>性别</th>
        </tr>
        <c:forEach items="${requestScope.stus}" var="stu">
            <tr>
                <td>${stu.id}</td>
                <td>${stu.name}</td>
                <td>${stu.age}</td>
                <td>${stu.gender}</td>
            </tr>
        </c:forEach>
    </table>
  • items 表示遍历的集合
  • var 表示遍历到的数据
  • begin 表示遍历的开始索引值
  • end 表示结束的索引值
  • step 属性表示遍历的步长值
  • varStatus 属性表示当前遍历到的数据的状态
上一篇:JSTL--表达式操作


下一篇:JSTL常用标签库