前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web阶段:第十四章:JSTL标签库

Web阶段:第十四章:JSTL标签库

作者头像
Java廖志伟
发布2022-09-28 11:07:17
5770
发布2022-09-28 11:07:17
举报

作者:java_wxid

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

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

在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 uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

core核心库使用 **<c:set />** 1、可以往域中保存数据 2、可以修改域中bean对象的属性或Map集合的某个key的值

<body>
<%-- i.<c:set /> --%>	
        <%--
            域对象.setAttriubte(key,value);
                scope 属性设置使用哪个域对象			page,request,session,application
                var 就是保存的key
                value 属性设置你要保存的值
        --%>
        <!-- 1、可以往域中保存数据 -->
        保存之前:${ requestScope.key1 }<br/>
        <c:set scope="request" var="key1" value="value1"></c:set>
        保存之后:${ requestScope.key1 }<br/>
        <hr/>
        <%
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("aa", "修改之前");
            map.put("bb", "bbValue");
            request.setAttribute("map", map);
        %>
    <%-- 2、可以修改域中bean对象的属性或Map集合的某个key的值
                bean对象.setXxxx(新值);		Xxx是你要修改的属性
                map对象.put(key,新值);		
            
            target属性表示你要修改哪个bean对象,或是哪个map集合
            property属性设置你要修改的是哪个属性,或是map集合的哪个key
            value	属性设置你的新值
     --%>
        修改之前:${ requestScope.map }<br/>
        <c:set target="${ requestScope.map }" property="aa" value="修改之后"></c:set>
        修改之后:${ requestScope.map }<br/>		
    </body>

**<c:if />** if标签可以用来做判断使用。

    <%-- if标签做if判断,
            test 属性是if判断的表达式(使用EL表达式输出真假值)
     --%>
    <c:if test="${ 12 == 12 }">
        <h1>12等于12啦啦啦……</h1>
    </c:if>

<c:choose> <c:when> <c:otherwise>标签 跟switch 、case、default,基本一样。

<%
            request.setAttribute("height", 136);
        %>
        <%--
            choose。when。otherwise需要注意两个点:
                1、在这里标签内不能使用html注释 
                2、when标签的父标签一定要是choose标签
         --%>
        <c:choose><%-- switch --%>
            <%-- when 表示一种条件情况,相当于case --%>
            <c:when test="${ requestScope.height >= 190 }">
                <h1>老高老高啦啦啦……</h1>
            </c:when>
            <c:when test="${ requestScope.height >= 180 }">
                <h1>很高很高啦啦啦……</h1>
            </c:when>
            <c:when test="${ requestScope.height >= 170 }">
                <h1>好矮好矮啦啦啦……</h1>
            </c:when>
            <c:when test="${ requestScope.height >= 160 }">
                <h1>二等那啥啦啦啦……</h1>
            </c:when>
            <c:otherwise><%-- default --%>
                <c:choose>
                    <c:when test="${ requestScope.height >= 150 }">
                        <h1>150</h1>
                    </c:when>
                    <c:when test="${ requestScope.height >= 140 }">
                        <h1>140</h1>
                    </c:when>
                    <c:when test="${ requestScope.height >= 130 }">
                        <h1>130</h1>
                    </c:when>
                </c:choose>
            </c:otherwise>
        </c:choose>

**<c:url />** 1、它可以生成一个url地址,直接输出 2、可以把生成的url地址保存到某个域中

<!-- 		1、它可以生成一个url地址,直接输出
                value 是你的访问的资源路径
                context 是你所在的工程路径,默认是当前工程
 -->
        <c:url value="/f.jsp" context="/abc">
            <c:param name="username" value="wzg168"></c:param>
            <c:param name="password" value="123456"></c:param>
        </c:url>
        <br/>
<!-- 		2、可以把生成的url地址保存到某个域中 
                域对象.setAttribute(key,地址);
                session.setAttribute(url,地址);
-->
        <c:url value="/f.jsp" context="/abc" scope="session" var="url">
            <c:param name="username" value="wzg168"></c:param>
            <c:param name="password" value="123456"></c:param>
        </c:url>
Session域中保存的地址是:${ sessionScope.url }

**<c:forEach />** forEach标签做遍历操作

1.遍历1到10,输出 2.遍历Object数组 3.遍历List集合—list中存放 Person类,有属性:编号,用户名,密码,年龄,电话信息 4.遍历Map集合

测试代码:

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="com.atguigu.pojo.Student"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Insert title here</title>
<style type="text/css">
    table{
        width: 500px;
        border: 1px solid red;
        border-collapse: collapse;
    }
    th , td{
        border: 1px solid red;
    }
</style>
    </head>
    <body>
<!-- 		1.遍历1到10,输出
                begin 遍历开始的索引
                end   遍历结束的索引
                var 是当前正在遍历到的数据
 -->
        <c:forEach begin="1" end="10" var="i">
            ${ i }
        </c:forEach>
        <hr/>


<!-- 2.遍历Object数组 -->
        <%
            request.setAttribute("arr", new String[]{"aaaa","bbbb","cccc"});
        %>
        <!-- 
                items 设置你要遍历的集合(数据源)
                var 是当前正在遍历到的数据
         -->
        <c:forEach items="${ requestScope.arr }" var="item">
            ${ item }<br/>
        </c:forEach>
        <hr/>


<!-- 3.遍历List集合---list中存放 Student类,有属性:编号,用户名,密码,年龄,电话信息 -->
        <%
            List<Student> list = new ArrayList<Student>();
            for (int i = 0; i < 10; i++) {
                list.add(new Student(i,"name"+i,"pass"+i,18+i,"phone"+i));
            }
            request.setAttribute("list", list);
        %>
        <table>
            <tr>
                <th>编号</th>
                <th>用户名</th>
                <th>密码</th>
                <th>年龄</th>
                <th>电话</th>
                <th>操作</th>
            </tr>
            <!-- 
                step	是设置步长,每次遍历完,索引怎么移动,默认是1
                varStatus	是当前遍历到的数据的状态对象
             -->
            <c:forEach begin="1" end="7" items="${ requestScope.list }" step="1" var="stu" varStatus="status">
                <c:if test="${ status.count == 3 }">
                    <tr style="background-color: green;">
                </c:if>
                <c:if test="${ status.count != 3 }">
                    <tr>
                </c:if>
                    <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>
        <hr/>
<!-- 4.遍历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">
            ${ entry.value }<br/>
        </c:forEach>
    </body>
</html>
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档