JSTL标签库

本文介绍了JSTL(JSP Standard Tag Library),它是一个用于提升JSP页面中逻辑代码编码效率的标准标签库。内容包括JSTL的概念、作用、如何使用JSTL标签库,以及详细讲解了out、set、remove、if、循环等核心标签的用法,旨在帮助开发者更好地理解和应用JSTL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、JSTL的概念:

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库。
JSTL不是JSP内置的标签,需要自己导包和指定标签库。用MyEcilpse开发JavaWeb时,lib目录下回存放JSTL的jar包,其他工具需要自行导包:jstl-1.2.jar。

二、JSTL的作用

提升JSP中逻辑代码的编码效率。

三、使用JSTL标签库

1)标签库

  1. 核心标签库(重点学习,其他了解即可)
  2. 格式化标签库
  3. 函数标签库
  4. XML标签库
  5. SQL标签库
    2)流程:
    1.导包
    2.使用taglib标签导入资源
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

3.核心标签库
4.格式化标签库

四、内容*

1)out标签

<c:out value="${表达式}" default="默认值"></c:out> 

作用结合EL表达式将数据响应给浏览器,如果EL表达式没有获取到数据可以用default属性声明默认值
2)set标签:

<c:set value="数据"  var="键名" scope="作用域名"></c:set>

作用:将数据存储到指定的作用域中,默认是pageContext;
注意:scope的值为:page/session/request/application

3)remove标签

<c:remove var="要删除的数据键名" scope="作用域名"/>

作用:删除作用域中的数据,默认是全部删除
但是可以用scope属性指定要删除的对象所在作用域

注:

<% pageConetxt.removeAttribute("hello"); %>

这句话会把所有"hello"标签删除,其余像session.removeAttribute()、application.removeAttribute()、request.removeAttribute()则不会,只删除当前作用域符合要求的数据
或者使用下面这句来指定删除的作用域,scope的值为1.pageContext、2.request、3.session、4.application

<% pageConetxt.removeAttribute(String name,int scope); %>

4)if标签
单分支逻辑判断标签

<c:if test="表达式">
数据
</c:if>

作用:使用EL表达式进行一定程度上的单分支逻辑判断
注意:test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式
该标签只能进行EL表达式相关的逻辑判断,不能进行EL表达式不能获取的作用域数据的逻辑处理

多分支逻辑判断标签

<c:choose>
	<c:when test="表达式">	</c:when>
	<c:when test="表达式">	</c:when>
	<c:when test="表达式">	</c:when>
	。。。
	<c:otherwise></c:otherwise>
	</c:choose>

注:符合条件后只会实现一个分支

5)循环标签

<c:forEach>
循环体
</c:forEach>

属性:
begin:声明循环的开始位置
end:声明循环的结束位置
step:声明循环的步长
varStatus:声明变量记录循环状态
注意:记录的数据存储到了作用域中可直接用EL表达式获取
示例:i
${i.index}获取单次循环的下标
${i.count}获取单次循环的次数
${i.first}判断是否是第一次循环
${i.last}判断是否是最后一次循环

${i.index}--${i.count}--${i.first}--${i.last}

在这里插入图片描述
items:声明要遍历的数据,可以是集合或数组等
var:声明变量,记录每次遍历的结果,可以在循环体中直接使用EL表达式查看循环次数
遍历数据:

<%
//创建测试数据list
ArrayList<String> list=new ArrayList<String>();
list.add("苹果");
list.add("荔枝");
list.add("榴莲");
//将list存储在作用域中
request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="s" varStatus="i">
${s}---${i.index}<br/>
</c:forEach>
<br/>

遍历HashMap

<%
//声明map集合测试数据
HashMap<String,String> hs=new HashMap<String,String>();
hs.put("s1","唱歌");
hs.put("s2", "跳舞");
hs.put("s3","敲代码");
//将数据存储到作用域中
request.setAttribute("hs", hs);
%>
	<c:forEach items="${hs}" var="s" varStatus="i">
	${s}---${i.index}<br/>
	${s.key}--${s.value}<br/>
	</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值