[Java]JSTL标签库

news2024/11/18 3:23:55

EL表达式icon-default.png?t=N2N8https://blog.csdn.net/m0_71229255/article/details/130173486?spm=1001.2014.3001.5501

JSTL标签的使用

Java Server Pages Standard Tag Libray(JSTL): JSP标准标签库,是一个定制标签类库的集合,用于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML处理,甚至数据库和访问数据库操作等。
JSTL中最重要的标签,迭代集合以及格式化数字和日期几个标签。
核心标签库:

http://java.sun.com/jsp/jstl/core 
包含Web应用的常见工作,比如:循环、表达式赋值、基本输入输出等。

格式化标签库:
http://java.sun.com/jsp/jstl/fmt
用来格式化显示数据的工作,比如:对不同区域的日期格式化等。

为了在JSP页面使用JSTL类库,必须以下列格式使用taglib指令:

<%@taglib uri="" prefix="" %>

 例如:

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

prefix前缀可以是任意内容,遵循规范可以使团队中由不同人员编写的代码更加相似;所以,建议使用事先设计好的前缀。

下载jar包:
官网
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

下载jakarta-taglibs-standard-1.2.5.zip包并解压,将jakarta-taglibs-standard-1.2.5/lib/下的两个jar文件: standard.jarjstl.jar文件拷贝到项目的指定目录下。

条件动作标签

条件动作指令用于处理页面的输出结果依赖于某些输入值的情况,在Java 中是利用if、if...else和switch语句来进行处理的。在JSTL中也有4个标签可以执行条件式动作指令: if、 choose,when和otherwise。

if标签

if标签先对某个条件进行测试,如果该条件运算结果为true,则处理它的主体内容,测试结果保存在一个Boolean对象中,并创建一个限域变量来引用Boolean对象。可以利用var属性设置限域变量名,利用scope属性来指定其作用范围。

语法格式

<c:if test="<boolean>" var="<string>" scope="<string>"
 ...
</c:if>

if标签有如下属性:

属性描述是否必要默认值
test条件
var用于存储条件结果的变量(限域变量名)
scopevar属性的作用域<br />可取值: page| request | session| applicationpage
    <%
        request.setAttribute("num", 10);
    %>
    <c:if test="${num>0 }">
        数值大于0
    </c:if>
    <br>
    <c:if test="${num>100 }" var="flag" scope="request"></c:if>
    ${flag }<br>
    ${requestScope.flag }<br>

choose、when和otherwise标签

choose和when标签的作用与Java中的switch和case关键字相似,用于在众多选项中做出选择。也就是说:他们为相互排斥的条件式执行提供相关内容。
switch语句中有case,而choose标签中对应有when,switch语句中有default,而choose标签中有otherwise。

语法格式:

    <c:choose>
        <c:when test="">
            ...
        </c:when>
        <c:when test="">
            ...
        </c:when>
        ...
        <c:otherwise>
            ...
        </c:otherwise>
    </c:choose>

属性:

  1. choose标签没有属性
  2. when标签只有一个test属性,必须属性
  3. otherwise标签没有联性

注意:

  1. choose标签至少包含一个when标签,可以没有otherwise标签
  2. otherwise标签必须设置在最后一个when标签后
  3. choose标签里不能直接嵌套其他标签,when标签和otherwise标签里可以嵌套其他标签
    <%
        request.setAttribute("score", 90);
    %>
    <c:choose>
        <c:when test="${score<60 }">
            <h2>不及格</h2>
        </c:when>
        <c:when test="${score>=60 && score<80 }">
            <h2>中等</h2>
        </c:when>
        <c:otherwise>
            优秀
        </c:otherwise>
    </c:choose>

迭代标签

forEach标签

用于循环遍历数组、List、Set、Map集合。在实际应用中使用非常频繁。

语法格式:

<c:forEach items="" var="">
    ...
</c:forEach>

items属性指定需要迭代的集合或数组
var属性制定迭代的当前元素

还可以设置开始索引,结束索引以及步长

<c:forEach items="${names }" var="name" begin="1" end="4" step="2">
    ${name } <br>
</c:forEach>
    <%
        List<String> names= new ArrayList<>();
        names.add("zhangsan1");
        names.add("zhangsan2");
        names.add("zhangsan3");
        names.add("zhangsan4");
        names.add("zhangsan5");
        names.add("zhangsan6");
        
        pageContext.setAttribute("names", names);
    %>
    <c:forEach items="${names }" var="name" begin="1" end="4" step="2">
        ${name } <br>
    </c:forEach>

 更常用是在表格里使用,通过varStatus属性可以设置当前对象的一些信息

<%@page import="com.jstl.bean.Student"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
.odd {
    background-color: #aaa;
}

.even {
    background-color: #eee;
}

/* table tr:nth-child(even) {
    background-color: #aaa;
} */
</style>
</head>
<body>
    <%
    List<Student> students = new ArrayList<>();
    students.add(new Student("zhangsan1", 11));
    students.add(new Student("zhangsan2", 12));
    students.add(new Student("zhangsan3", 13));

    pageContext.setAttribute("students", students);
    %>
    <table border="1">
        <tr>
            <th>序号</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>

        <c:forEach items="${students }" var="student" varStatus="vs">
            <tr class="${vs.count % 2 == 0 ? 'even' : 'odd' }">
                <td>${vs.count }</td>
                <%-- <td>${vs.index }</td> 从0开始--%>
                <%-- <td>${vs.first }</td> true/false--%>
                <%-- <td>${vs.last }</td> true/false--%>
                <td>${student.name }</td>
                <td>${student.age }</td>
            </tr>

        </c:forEach>

    </table>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 建模方案及代码实现

更新信息&#xff1a;2023-4-15 更新了代码 【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 1 题目 电商物流网络由物流场地&#xff08;接货仓、分拣中心、营业部等&#xff09;和物流场 地之间的运输线路组成&#xff0c;如…

Java项目架构分层改造-项目亮点

服务分层改造 时间操作人员2023年04月12日23:04:00创建文档Cheems 原始项目结构 所有文件糅杂在一起&#xff08;大多数公司如此&#xff09;&#xff0c;没有分层开&#xff0c;功能增加代码复杂不清晰 分层改造后 先确定思路&#xff0c;后续把功能搬过来即可&#xff01;&…

关于GNSS技术介绍(一)

什么是GNSS&#xff1f; GNSS的全称是全球导航卫星系统&#xff08;Global Navigation Satellite System&#xff09;&#xff0c;它是泛指所有的卫星导航系统&#xff0c;包括全球的、区域的和增强的。GNSS是覆盖全球的自主地利空间定位的卫星系统&#xff0c;用于导航与定位…

Stable Diffusion成为生产力工具(四):制作食品安全PPT所用的相关图片png、图标icon

S&#xff1a;你安装stable diffusion就是为了看小姐姐么&#xff1f; I &#xff1a;当然不是&#xff0c;当然是为了公司的发展谋出路~~ 预先学习&#xff1a; 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。运行使用时问题《Windows使用Stable Diffusion时…

【C语言】 数据的存储 -- 数据类型介绍 -- 存储 -- 浮点型在内存中的存储,很详细也很重要,不明白的一定要看

目录 1、数据类型介绍 1.1 类型的基本归类 2、整型在内存中的存储 2.1 原码、反码、补码 2.2 大小端介绍 2.3 练习 3、浮点型在内存中的存储 3.1 举一个例子 3.2 浮点数存储规则 *************************************************正文开始*************************…

一文了解MongoDB的各种部署模式

单节点模式&#xff08;Standalone&#xff0c;不推荐用于生产环境&#xff09; standalone模式即单节点模式&#xff0c;指在服务器上只部署一个 mongod 进程用于读写数据。优点是部署简单&#xff0c;可以快速完成部署&#xff0c;缺点是无容灾。只推荐用于日常的开发、测试…

线程(Thread)的三种等待唤醒机制详解

1、为什么需要线程的等待和唤醒 线程的等待唤醒机制是一种经典的“生产者和消费者”模型。例如食品加工厂&#xff0c;食品加工人员和原料补给人员&#xff0c;在有充足原料时&#xff0c;补给人员是在等待&#xff0c;等到原料不够时&#xff0c;食品加工人员通知补给人员&am…

linux实时性分析

什么是实时操作系统 操作系统的实时性是指执行一个特定任务的时间是确定的和可预测的&#xff0c;这个任务执行时限需要考虑任何的情况&#xff0c;包括最恶劣的情况。或者说操作系统能够在规定的时间点内完成指定的任务操作&#xff0c;一旦超过这个时间点会对整个系统带来不…

【探花交友】day01—项目介绍与环境搭建

目录 1、项目介绍 1.1、功能列表 1.2、项目背景 1.3、功能概述 1.4、技术方案 1.5、技术解决方案 2、前后端分离 2.1、前后端分离的概述 2.2、YAPI介绍 3、开发工具 3.1、虚拟机配置 3.2、Android模拟器 3.3、调试工具PostMan 4、环境搭建 4.1、MYSQL数据库 4.…

【JAVA程序设计】(C00127)基于SSM+vue开发的音乐播放管理系统-有文档

基于SSMvue开发的音乐管理系统-有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架vue以及html前台的开发的音乐管理系统共分为二个角色&#xff1a;管理员、用户 管理员角色包含以下功能&#xff1a; 登录、个人中心&#xff08;修改密码、个人信息修改&am…

溯源取证-内存取证 高难度篇

今天的场景依然是windows场景&#xff0c;只不过此次场景分为两个镜像&#xff0c;本次学习主要学习如何晒别钓鱼邮件、如何提取钓鱼邮件、如何修复损坏的恶意文件、如何提取DLL动态链接库文件 本次需要使用的工具&#xff1a; volatility_2.6_lin64_standalone readpst clams…

c++11 标准模板(STL)(std::unordered_multimap)(十三)

定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…

交互式电子沙盘数字沙盘大数据系统开发第8课

交互式电子沙盘数字沙盘大数据系统开发第8课 这次我们完成的功能为拖动一个外部的UI对象到球球上&#xff1a; private void Button_PreviewMouseMove(object sender, MouseEventArgs e) { if(e.LeftButton MouseButtonState.Pressed) DragDr…

Vue简易便签实现

Vue简易便签实现 html部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Comp…

ChatGPT这么强,你该怎么办?

总编说&#xff1a;《生命3.0》给未来选择工作的人提出的建议显得更加重要。泰格玛克认为&#xff0c;未来选择工作前需要询问三个问题&#xff1a;是否需要与人打交道&#xff0c;运用社交智慧&#xff1f;是否需要创造力&#xff0c;解决复杂问题&#xff1f;是否需要在不确定…

leetcode1306.跳跃游戏

跳跃游戏 -这里有一个非负整数数组 arr&#xff0c;你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时&#xff0c;你可以跳到 i arr[i] 或者 i - arr[i]。 请你判断自己是否能够跳到对应元素值为 0 的 任一 下标处。 注意&#xff0c;不管是什么情况下&#xff…

不会吧?该不会还有企业没实现员工赋能吧!要我说,选低代码就对了!

员工作为企业的重要生产力要素&#xff0c;员工赋能一直是企业经营者重点关注的领域。 在大部分企业经营实践中&#xff0c;员工赋能由人力资源部门负责&#xff0c;赋能的主要形式是集中培训&#xff0c;其结果往往是业务繁忙时&#xff0c;人力组织难度大、业务部门参与意愿低…

深度剖析JVM三个面试常考知识点

目录 &#x1f433;今日良言:只要你足够努力,生命都会庇佑你 &#x1f407;一、JVM内存区域划分 &#x1f407;二、类加载过程 &#x1f407;三、垃圾回收机制(GC) &#x1f433;今日良言:只要你足够努力,生命都会庇佑你 &#x1f407;一、JVM内存区域划分 先来了解一下什…

MySql的sql_mode

文章目录简介查看命令配置文件设置命令配置文件常用的模式ONLY_FULL_GROUP_BYNO_AUTO_VALUE_ON_ZEROSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTIONPIPES_AS_CONCATANSI_QUOTES专栏目录请点击 简介 他是…

【通过Cpython3.9源码看看列表到底是咋回事】

列表结构 typedef struct {PyObject_VAR_HEAD/* Vector of pointers to list elements. list[0] is ob_item[0], etc. */PyObject **ob_item;/* ob_item contains space for allocated elements. The number* currently in use is ob_size.* Invariants:* 0 < ob_siz…