JSTL

博客介绍了JSTL(JSP Standard Tag Library),它是为解决EL表达式不能替代JSP脚本片段问题而定义的通用标签库。阐述了其标准制定与实现方,由5个不同功能标签库组成。还说明了使用JSTL需导入两个jar包,在JSP页面引入标签库,并列举了核心标签的使用。

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

JSTL简介

  • JSP虽然为我们提供了EL表达式用来替代JSP表达式,但是由于EL表达式仅仅具有输出功能,而不替代页面中的JSP脚本片段。
  • 为了解决这个问题,JSP为我们提供了可以自定义标签库(Tag Library)的功能。
  • 所谓自定义标签库就是指可以在JSP页面中以类似于HTML标签的形式调用Java中的方法。使用方法和我们JSP动作标签类似。
  • 而为了方便开发使用Sun公司又定义了一套通用的标签库名为JSTL(JSP Standard Tag
    Library),里面定义很多我们开发中常用的方法,方便我们使用。
  • JSTL的标准由Sun公司定制,Apache的Jakarta小组负责实现。
  • JSTL由5个不同功能的标签库组成。

如何使用JSTL

1.使用JSTL必须在项目中导入两个jar包
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.5.jar
2.然后还需要在JSP页面中通过taglib标签引入标签库
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
prefix用来指定前缀名,我们通过该名来使用JSTL
uri相当于库的唯一标识,因为JSTL由多个不同的库组成,使用该属性指定要导入哪个库。
3.使用JSTL
<c:out value=“hello”></c:out>
这个例子标识,调用前缀为c的标签的out方法,向页面中输出value属性中的字符串。
JSTL的使用非常像html标签。

标签库

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

功能范围URI前缀
核心http://java.sun.com/jsp/jstl/corec
格式化http://java.sun.com/jsp/jstl/fmtfmt
函数http://java.sun.com/jsp/jstl/functionsfn
数据库(不使用)http://java.sun.com/jsp/jstl/sqlsql
XML(不使用)http://java.sun.com/jsp/jstl/xmlx

核心标签

<c:out>

<c:out>用于计算一个表达式并将结果输出到当前页面。
功能类似于JSP表达式<%= >和EL表达式${}
可以设置的属性
value
作用:要输出的值
参数类型:Object
default
作用:当value为null时显示的默认值。
参数类型:Object

escapeXml
作用:是否对特殊字符进行转义。
参数类型:boolean
例:
<c:out value="${user.name}" default="" escapeXml="true"></c:out>

<c:set>

<c:set>用于添加或修改域中的属性
可以设置的属性:
value
作用:要设置的值
参数类型:Object
var
作用:表示域中存放的属性名。
参数类型:String
scope
作用:指定域(page、request、session、application),若不指定则为page
域对象
参数类型:String
target
作用:要修改的域对象的属性名(必须是JavaBean或者Map)
参数类型:Object
property
作用:指定要修改的对象的属性名
参数类型:String
例
设置属性:
<c:set var="key" value="value" scope="request"></c:set>
修改属性:
<c:set property="name" target="${user}" value="孙悟空"></c:set>

<c:remove>

<c:remove>用于移除域中的属性
可以设置的属性:
var
作用:设置要移除的属性的名字
作用:String
scope
作用:设置要移除属性所在的域,若不指定则删除所有域中的对应属性
参数类型:String
例:
移除所有域中key属性:<c:remove var="key"/>
移除request中的key属性: <c:remove var="key" scope="request"/>

<c:if>

<c:if>用于实现if语句的判断功能
可设置的属性
test
作用:设置if判断的条件,用于判断标签体是否被执行
参数类型:boolean
var
作用:用于指定接收判断结果的变量名
参数类型:boolean
scope
作用:指定判断结果保存到哪个域
参数类型:String
例:
<c:if test="${empty user }" var="isUserEmpty" scope="request">
		用户为空
	</c:if>

<c:choose>、<c:when>、<c:otherwise>

<c:choose><c:when><c:otherwise>三个标签配合使用,功能类似于Java中的if/else<c:choose><c:when><c:otherwise>的父标签
<c:when>的属性
test
作用:用于设置判断条件,若正确则c:when中的代码执行,否则不执行
参数类型:boolean<c:otherwise>
作用:如果所有的<c:when>都没有执行则执行<c:otherwise>的标签体
例:
<c:choose>
		<c:when test="${param.age>=18 }">
			您已经成年
		</c:when>
		<c:otherwise>
			您未成年
		</c:otherwise>
	</c:choose>

<c:forEach>

<c:forEach>用于对多个对象的集合进行迭代,重复执行标签体,或者重复迭代固定的次数。
可设置属性:
var
作用:设置遍历出对象的名称
参数类型:String
items
作用:指定要遍历的集合对象
参数类型:数组、字符串和各种集合
varStatus
作用:指定保存迭代状态的对象的名字,该变量引用的是一个LoopTagStatus类型的对象,通过该对象可以获得一些遍历的状态:
count
index
first
last
name
参数类型:String
begin
作用:指定遍历的开始位置
参数类型:int
end
作用:指定遍历的结束位置
参数类型:int
step
作用:迭代的步长
参数类型:int
例:
<c:forEach items="${list}" var="user" begin="0" end="4" step="2" varStatus="vs">
		${vs.index} -- ${user.name } -- ${user.age }<br />
	</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值