JSTL详解演示说明


什么是JSTL


JSTL(JSP Standard Tag Library ,JSP标准标签库),是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言, JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库而已。

JSTL一共包含四大标签库:
core:核心标签库,我们学习的重点;
fmt:格式化标签库,只需要学习两个标签即可;
sql:数据库标签库,不需要学习了,它过时了;
xml:xml标签库,不需要学习了,它过时了。

下载JSTL包:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
下载安装包:jakarta-taglibs-standard-1.1.2.zip,解压后得到文件 jstl.jar和standard.jar复制到lib下

测试JSTL
在JSP页面中添加如下代码引入JSTL标签库:
在这里插入图片描述
程序说明 :
引入JSTL核心标签库core,以“c”为前缀;


JSTL中的Core标签库


1.<c:out>标签
在JSP页面中,最常见的操作就是向页面输出一段文本信息,为此,Core标签库提供了一个<c:out>标签,该标签可以将一段文本内容或表达式的结果输出到客户端。如果<c:out>标签输出的文本内容中包含需要进行转义的特殊字符,例如>、<、&、’、" 等,<c:out>标签会默认对它们进行HTML编码转换后再输出。<c:out>标签有两种语法格式,具体如下:
语法1:没有标签体的情况在这里插入图片描述
语法2:有标签体的情况
在这里插入图片描述

value属性用于指定输出的文本内容;
default属性用于指定当value属性为null时所输出的默认值,该属性是可选的(方括号中的属性都是可选的);
escapeXml属性用于指定是否将>、<、&、'、" 等特殊字符进行HTML编码转换后再进行输出,默认值为true。

需要注意的是,只有当value属性值为null时,<c:out>标签才会输出默认值,如果没有指定默认值,则默认输出空字符串。

2.<c:if>标签
在程序开发中,经常需要使用if语句进行条件判断,如果要在JSP页面中进行条件判断,就需要使用Core标签库提供的<c:if>标签。

在这里插入图片描述

test属性用于设置逻辑表达式;
var属性用于指定逻辑表达式中变量的名字;
scope属性用于指定var变量的作用范围,默认值为page。如果属性test的计算结果为true,那么标签体将被执行,否则标签体不会被执行。

3.<c:choose>标签
在程序开发中不仅需要使用if条件语句,还经常会使用if-else语句,为了在JSP页面中也可以完成同样的功能,Core标签库提供了<c:choose>标签,该标签用于指定多个条件选择的组合边界,它必须与<c:when>、<c:otherwise>标签一起使用。

在这里插入图片描述
<c:choose>标签没有属性,在它的标签体中只能嵌套一个或多个<c:when>标签和零个或一个<c:otherwise>标签


标签只有一个test属性,该属性的值为布尔类型。test属性支持动态值,其值可以是一个条件表达式,如果条件表达式的值为true,就执行这个标签体的内容。

在这里插入图片描述


标签没有属性,它必须作为标签最后分支出现,当所有的标签的test条件都不成立时,才执行和输出标签体的内容

在这里插入图片描述


4.<c:forEach>标签
在JSP页面中,经常需要对集合对象进行循环迭代操作,为此,Core标签库提供了一个<c:forEach>标签,该标签专门用于迭代集合对象中的元素,如Set、List、Map、数组等,并且能重复执行标签体中的内容,它有两种语法格式,具体如下:

在这里插入图片描述

var属性用于指将当前迭代到的元素保存到page域中的名称;
items属性用于指定将要迭代的集合对象;
varStatus用于指定当前迭代状态信息的对象保存到page域中的名称;
begin属性用于指定从集合中第几个元素开始进行迭代,begin的索引值从0开始,如果没有指定items属性,就从	begin指定的值开始迭代,直到迭代结束为止;
step属性用于指定迭代的步长,即迭代因子的增量。

标签的varStatus属性用于设置一个javax.servlet.jsp.jstl.core.LoopTagStatus类型的变量,这个变量包含了从集合中取出元素的状态信息。使用标签的varStatus属性可以获取以下信息:
count:表示元素在集合中的序号,从1开始计数;
index:表示当前元素在集合中的索引,从0开始计数;
first:表示当前是否为集合中的第一个元素;
last:表示当前是否为集合中的最后一个元素;

5.<c:param>标签和<c:url>标签
在开发一个Web应用程序时,通常会在JSP页面中完成URL的重写以及重定向等特殊功能,为了完成这些功能,在Core标签库中,也提供了相应功能的标签,这些标签包括<c:param>、<c:redirect>和<c:url>。其中<c:param>标签用于获取URL地址中的附加参数,<c:url>标签用于按特定的规则 重新构造URL,<c:redirect>标签负责重定向。

<c:param>标签用于在URL地址中附加参数,它通常嵌套在<c:url>标签内使用。<c:param>标签有两种语法格式,具体如下:

在这里插入图片描述

name属性用于指定参数的名称;
value属性用于指定参数的值,当使用<c:param>标签为一个URL地址附加参数时,
它会自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,
则将其转换为“%e4%b8%ad%e5%9b%bd”后再附加到URL地址后面,这也是使用<c:param>标签的最大好处。

在访问一个JSP页面时,通常会在URL中传递一些参数信息,为了方便完成这种功能,Core标签库中提供了一个标签,该标签可以在JSP页面中构造一个新的地址,实现URL的重写。标签有两种语法格式,具体如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210618114624825.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1Njk2Mjg4,size_16,color_FFFFFF,t_70)
value属性用于指定构造的URL;
context属性用于指定导入同一个服务器下其他Web应用的名称;
var属性用于指定将构造的URL地址保存到域对象的属性名称;
scope属性用于指定将构造好的URL保存到域对象中。

代码演示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   <!-- 引入标签(jar包定义好的) -->    
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<c:out value="Hello World!"></c:out> <br>
	<hr>
	
	
	<c:set value="1" var="visitCount"></c:set>  <!-- 可以试着改变value的值,看下面的输出是否还会进行 -->
	<c:if test="${ visitCount == 1 }"> <!-- 如果是1,将执行下面信息的输出 -->
		This is you first visit.Welcome to the site!<br>
	</c:if>
	<hr>
	
	
	<c:choose>
		<c:when test="${ empty param.username }"> <!-- 判断这个参数是否为空,为空执行下面的输出信息 -->
			unknown user;
		</c:when>
		<c:when test="${ param.username == 'jack' }">
			${ param.username } is manager.
		</c:when>
		<c:otherwise>
			${ param.username } is employee.
		</c:otherwise>
	</c:choose>
	
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值