Jstl表达式out、set、if、choose、forEach

2024-08-31 23:08

本文主要是介绍Jstl表达式out、set、if、choose、forEach,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL 库安装
Apache Tomcat安装JSTL 库步骤如下:
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。

这里写图片描述


核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out>  用于在JSP中显示数据,就像<%= ... >
<c:set>  用于保存数据
<c:remove>   用于删除数据
<c:catch>    用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>   与我们在一般程序中用的if一样
<c:choose>   本身只当做<c:when>和<c:otherwise>的父标签
<c:when>     <c:choose>的子标签,用来判断条件是否成立
<c:otherwise>    <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>   检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>  基础迭代标签,接受多种集合类型
<c:forTokens>    根据指定的分隔符来分隔内容并迭代输出
<c:param>    用来给包含或重定向的页面传递参数
<c:redirect>     重定向至一个新的URL.
<c:url>  使用可选的查询参数来创造一个URL

Customer

package com.safly;
public class Customer {private int id;public int getId() {return id;}public void setId(int id) {this.id = id;}public Customer() {super();}
}


我们来看看c:out、c:set的简单用法吧:

c:out语法格式

<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性  描述  是否必要    默认值
value    要输出的内容  是   无
default  输出的默认值  否   主体中的内容
escapeXml    是否忽略XML特殊字符     否   true

c:set语法格式

<c:setvar="<string>"value="<string>"target="<string>"property="<string>"scope="<string>"/>
属性  描述  是否必要    默认值
value    要存储的值   否   主体的内容
target   要修改的属性所属的对象     否   无
property     要修改的属性  否   无
var  存储信息的变量     否   无
scope    var属性的作用域   否   Page


实例代码如下:

    <%request.setAttribute("book", "java");%>book:<c:out value="${requestScope.book}"></c:out><c:set var="name" value="safly" scope="page"></c:set><!--  等价于下面一行代码,为域对象赋值 --><%pageContext.setAttribute("name", "safly");%>name:${pageScope.name }<%Customer cust = new Customer();cust.setId(101);request.setAttribute("cust", cust);%>ID:${requestScope.cust.id }<c:set target="${requestScope.cust}" property="id" value="${param.id}"></c:set>ID:${requestScope.cust.id }

浏览器输入http://localhost:8080/day01/mytag.jsp?id=234
页面输出结果如下

book: java name:safly ID:101 ID:234 


我们来看看c:if、c:choose标签的简单用法吧:
c:choose语法格式

<c:choose><c:when test="<boolean>"/>...</c:when><c:when test="<boolean>"/>...</c:when>......<c:otherwise>...</c:otherwise>
</c:choose>
<c:choose>标签没有属性。
<c:when>标签只有一个属性,在下表中有给出。
<c:otherwise>标签没有属性。

c:if语法格式

<c:if test="<boolean>" var="<string>" scope="<string>">...
</c:if>
属性       描述 是否必要    默认值
test     条件  是   无
var  用于存储条件结果的变量     否   无
scope    var属性的作用域   否   page

实例代码如下:

   <c:set value="20" var="age" scope="request"></c:set><c:if test="${requestScope.age > 18}">成年了</c:if><c:if test="${param.age > 18}" var="isAdult" scope="request"></c:if>isAdult:<c:out value="${requestScope.isAdult}"></c:out><br><c:choose><c:when test="${param.age > 60}">老年</c:when><c:when test="${param.age > 40}">中年</c:when><c:otherwise>青年</c:otherwise></c:choose>

浏览器输入
http://localhost:8080/day01/mytag.jsp?age=45

输出结果如下:

成年了 isAdult:true
中年 


我们来看看c:forEach标签的简单用法吧:
c:forEach语法格式

<c:forEachitems="<object>"begin="<int>"end="<int>"step="<int>"var="<string>"varStatus="<string>">...

属性             描述                             是否必要   默认值
items       要被循环的信息                            否     无
begin       开始的元素(0=第一个元素,1=第二个元素)      否    0
end         最后一个元素(0=第一个元素,1=第二个元素)    否     Last element
step        每一次迭代的步长                           否     1
var         代表当前条目的变量名称                    否     无
varStatus   代表循环状态的变量名称                    否     无
 <%List<Customer> custs = new ArrayList<Customer>();custs.add(new Customer(1,"AA"));custs.add(new Customer(2,"BB"));custs.add(new Customer(3,"CC"));custs.add(new Customer(4,"DD"));custs.add(new Customer(5,"EE"));custs.add(new Customer(6,"FF"));request.setAttribute("custs",custs);%><c:forEach items="${requestScope.custs}" var="safly" begin="1" step="2" end="5">${safly.id }:${safly.name }</c:forEach>
<br><%Map<String,Customer> custMap = new HashMap<String,Customer>();custMap.put("a",new Customer(1,"AA"));custMap.put("b",new Customer(2,"BB"));custMap.put("c",new Customer(3,"CC"));custMap.put("d",new Customer(4,"DD"));custMap.put("e",new Customer(5,"EE"));request.setAttribute("custMap",custMap);%><c:forEach items="${requestScope.custMap}" var="safly">${safly.key }---${safly.value.id }--${safly.value.name }<br></c:forEach><%String [] names = new String[]{"A","B","C"};request.setAttribute("names",names);%><c:forEach var="safly" items="${names}">${safly }</c:forEach>

http://localhost:8080/day01/mytag.jsp、
输出结果如下:

2:BB 4:DD 6:FF 
d---4--DD
e---5--EE
b---2--BB
c---3--CC
a---1--AA
A B C 

这篇关于Jstl表达式out、set、if、choose、forEach的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125257

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变