javaEE-8-JSTL标签库

JST标签库是什么

1、JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。
2、EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面 变得更佳简洁。

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

2020年只用第一个

在 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/functions" %>

JSTL 标签库的使用步骤

1、先导入 jstl 标签库的 jar 包:

taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar

2、使用 taglib 指令引入标签库:

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

core 核心库使用

1、<c:set />(使用很少):作用:set 标签可以往域中保存数据

<%-- <c:set /> 作用:set 标签可以往域中保存数据

               域对象.setAttribute(key,value);
               scope 属性设置保存到哪个域
                   page 表示 PageContext 域(默认值)
                   request 表示 Request 域
                   session 表示 Session 域
                   application 表示 ServletContext 域
               var 属性设置 key 是多少
               value 属性设置值 --%>
保存之前:${ sessionScope.abc } <br>
<c:set scope="session" var="abc" value="abcValue"/>
保存之后:${ sessionScope.abc } <br>
</body>

2、<c:if />:if 标签用来做 if 判断

<%--ii.<c:if /> if 标签用来做 if 判断。 test 属性表示判断的条件(使用 EL 表达式输出) --%>
<c:if test="${ 12 == 12 }">
    <h1>12 等于 12</h1>
</c:if>
<c:if test="${ 12 != 12 }">
    <h1>12 不等于 12</h1>
</c:if>

3、<c:choose> <c:when> <c:otherwise>标签:
作用:多路判断。跟 switch ... case .... default 非常接近

<body>
<%-- <c:choose> <c:when> <c:otherwise>标签
     作用:多路判断。跟 switch ... case .... default 非常接近

     choose 标签开始选择判断
     when 标签表示每一种判断情况
        test 属性表示当前这种判断情况的值
     otherwise 标签表示剩下的情况

     <c:choose> <c:when> <c:otherwise>标签使用时需要注意的点:
        1、标签里不能使用 html 注释,要使用 jsp 注释
        2、when 标签的父标签一定要是 choose 标签
--%>
<%
    request.setAttribute ("height", 181);
%>
<c:choose>
    <%-- 这是 html 注释 --%>
    <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>小根</h3>
        </c:when>
            <c:when test="${requestScope.height > 150}">
                <h3>小小根</h3></c:when>
            <c:when test="${requestScope.height > 140}">
                <h3>废根</h3></c:when>
            <c:otherwise> 无根 </c:otherwise>
        </c:choose>
    </c:otherwise>
</c:choose>
</body>
4、<c:forEach /> 作用:遍历输出使用

4.1、遍历 1 到 10,输出

<body>
<%--1.遍历 1 到 10,输出
    begin 属性设置开始的索引
    end 属性设置结束的索引
    var 属性表示循环的变量(也是当前正在遍历到的数据)
    for (int i = 1; i < 10; i++) --%>
<table border="1">
    <c:forEach begin="1" end="10" var="i">
    <tr>
        <td>第${i}行</td>
    </tr>
    </c:forEach>
</table>
</body>

4.2、遍历 Object 数组

<body>
<%-- 2.遍历 Object 数组 for (Object item: arr) items 表示遍历的数据源(遍历的集合) var 表示当前遍历到的数据 --%>
<%
    request.setAttribute ("arr", new String[]{"18888888888", "17688886666", "18699998888"});
%>
    <c:forEach items="${ requestScope.arr }" var="item">
        ${ item } <br>
    </c:forEach>
</body>

4.3、遍历map集合

<%
    Map<String, Object> map = new HashMap<String, Object> ( );
    map.put ("key1", "value1");
    map.put ("key2", "value2");
    map.put ("key3", "value3");
    // for ( Map.Entry<String,Object> entry : map.entrySet()) { // }
    request.setAttribute("map", map);
%>
<c:forEach items="${ requestScope.map }" var="entry">
    <h1>
            ${entry.key} = ${entry.value}
    </h1>
</c:forEach>

4.4、遍历 List 集合---list 中存放 Student 类,
属性:编号,用户名,密码,年龄, 电话信息

<%--
    遍历 List 集合---list 中存放 Student 类,有
    属性:编号,用户名,密码,年龄,电话信息
--%>
<%
    List<Student> studentList = new ArrayList<Student> ( );
    for (int i = 1; i <= 10; i++) {
        studentList.add (new Student (i, "username" + i, "pass" + i, 18 + i, "phone" + i));
    }
    request.setAttribute ("stus", studentList);
%>
<table>
    <tr>
        <th>编号</th>
        <th>用户名</th>
        <th>密码</th>
        <th>年龄</th>
        <th>电话</th>
        <th>操作</th>

    </tr>
<%--items 表示遍历的集合
    var 表示遍历到的数据
    begin 表示遍历的开始索引值
    end 表示结束的索引值
    step 属性表示遍历的步长值   //间隔n连个数据
    varStatus 属性表示当前遍历到的数据的状态 ,比如status.index就是下标
    for(int i = 1; i < 10; i+=2)--%>
    <c:forEach begin="2" end="7" step="2"  varStatus="status" items="${requestScope.stus}" var="stu">
        <tr>
            <td>${stu.id}</td>
            <td>${stu.username}</td>
            <td>${stu.password}</td>
            <td>${stu.age}</td>
            <td>${stu.phone}</td>
            <td>${status.step}</td>
        </tr>
    </c:forEach>
</table>

注意:

lombok似乎不能同时用,或者暂未发现,所有最好手动加GET,SET方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352