JSTL是一个不断完善的开放源代码的JSP标签库,使用JSTL可以取代在传统JSP程序中嵌入Java代码的做法,大大提高程序的可维护性。
JSTL包含五类标准标签库,它们分别是核心标签库、国际化/格式化标签库、SQL标签库、XML标签库和函数标签库。在使用这些标签库之前,必须在JSP页面的顶部使用<%@taglib%>指定定义引用的标签库和访问前缀。
以下为此五种标签库的引用指令格式和作用:
(1)使用核心标签库的taglib指令格式
<%@ taglib prefix="c" url="http:/java.sun.com/jsp/jsp1/core" %>
核心标签库主要用于完成JSP页面的常用功能,包括JSTL的表达式标签、URL标签、流程控制标签。例如用于输出文本内容的<c:out>标签、用于条件判断的<c:if>标签等等
(2)使用格式标签库的taglib指令格式
<%@ taglib prefix="fmt" url="http:/java.sun.com/jsp/jsp1/fmt" %>
国际化/格式化标签库包含实现Web应用程序的国际化标签和格式化标签。例如设置JSP页面的本地信息,设置JSP页面的时区等等
(3)使用SQL标签库的taglib指令格式
<%@ taglib prefix="sql" url="http:/java.sun.com/jsp/jsp1/sql" %>
SQL标签库包含用于访问和操作数据库的标签。例如数据库连接、从数据库中检索数据等。因为在软件分层开发模型中,JSP页面仅作为显示层,一般不会在JSP页面直接操作数据库,所以SQl标签库不常用
(4)使用XML标签库的taglib指令格式
<%@ taglib prefix="xml" url="http:/java.sun.com/jsp/jsp1/xml" %>
XML标签库包含对XML文档中的数据进行操作的标签,例如解析XML文件、输出XML文档中的内容,以及迭代处理XML文档中的元素。XML广泛应用于Web开发,使用XML标签库处理XML文档更加简单方便
(5)使用函数标签库的taglib指令格式
<%@ taglib prefix="fn" url="http:/java.sun.com/jsp/jsp1/functions" %>
函数标签库提供了一套自定义EL函数,包含JSP网页制作者经常要用到的字符串操作
1、JSTL中的Core标签库
1.1 表达式标签
- <c:out>
作用:将一段文本内容或表达式的结果输出到客户端(如果文本中包含需要转义的特殊字符,则该标签会先进行HTML编码转换后再输出)
语法格式:
(1)没有标签体的情况
<c:out value="value" [default="defaultValue"] [escapeXml="{true|false}"] />
(2)有标签体的情况
<c:out value="value" [escapeXml="{true|false}"]>
defaultValue
</c:out>
没有标签体的情况下需要使用default属性指定默认值,有标签体的情况下在标签体中指定输出的默认值。
参数:
[ ]方括号内的属性为可选
value属性用于指定输出的文本内容
default属性用于指定当value为null时输出的默认值,默认为空字符串
escapeXml属性用于指定是否将<、>、&等特殊字符进行HTMl编码转换后在输出,默认为真
- <c:remove>
作用:用于移除指定的JSP范围内的变量
语法格式:
<c:remove var="name" [scope="范围"] />
参数:
var:用于指定要移除的变量名
scope:用于指定变量的有效范围,可选值有page、request、session和application,默认为page。如果在该标签中没有指定变量的有效范围,那么将分别在page、request、session和application的范围内查找该变量并移除,即在一个页面中,存在不同范围的多个同名变量时,会全部移除
1.2 流程控制标签
- <c:if>
作用:用于条件判断
语法格式:
(1)没有标签体的情况
<c:if test="testCondition" var="result"
[scope="{page|request|session|application}"] />
(2)有标签体的情况
<c:if test="testCondition" var="result" [scope="{page|request|session|application}"]>
body content
</c:if>
参数:
test属性:用于设置逻辑表达式
var属性:用于指定逻辑表达式中变量的名字
scope属性:用于指定var变量的作用范围,默认为page
- <c:choose>和<c:when>、<c:otherwise>
<c:choose>标签没有属性,它必须与<c:when><c:otherwise>一起使用
在<c:choose>标签体中只能嵌套一个或多个<c:when>标签、零个或一个<c:otherwise>标签,并且<c:when>标签必须出现在<c:otherwise>标签前
<c:choose>标签语法格式:
<c:choose>
Body content(<when> and <otherwise> subtags)
</c:choose>
<c:when>标签语法格式:
<c:when test="testCondition">
Body content
</c:when>
<c:otherwise>标签语法格式:
<c:otherwise>
conditional block
</c:otherwise>
这三个标签中只有<c:when>标签有一个test属性来用于条件判断,而<c:otherwise>标签作为 最后的分支,即前面的条件都不成立时才执行输出
1.3 循环标签
在JSP页面中经常需要对集合对象进行循环迭代操作,所以Core标签库提供了一个<c:forEach>标签来用于迭代集合对象(Set、List、Map、数组等)中的元素
(1)迭代包含多个对象的集合
<c:forEach [var="varName"] items="collection"
[varStatus="varStatusName"] [begin="begin"]
[end="end"] [step="step"]>
body content
</c:forEach>
(2)迭代指定范围内的集合
<c:forEach [var="varName"] [varStatus="varStatusName"]
begin="begin" end="end" [step="step"]>
body content
</c:forEach>
参数:
var属性:用于将当前迭代到的元素保存到page域中的名称
items属性:用于指定将要迭代的集合对象
varStatus属性:用于指定将当前迭代状态信息的对象保存到page域中的名称
begin属性:用于指定从集合的第几个元素开始迭代(如果没有指定items属性则从begin指定的值开始迭代到结束为止)
step属性:用于指定迭代的步长,即迭代因子的增量
1.4 URL相关标签
在开发Web应用程序时,通常会在JSP页面中实现URL的重新以及重定向等特殊功能,所以Core标签库也提供了相关标签
- <c:param>用于获取URL地址中的附加参数
- <c:url>用于按特定的规则重新构造URL
- <c:redirect>负责重定向
<c:param>通常嵌套在<c:url>内使用
<c:param>语法格式:
(1)使用value属性指定参数的值
<c:param name="name" value="value">
(2)在标签体中指定参数的值
<c:param name="name">
parameter value
</c:param>
参数:
name属性:用于指定参数的名称
value属性:用于指定参数的值,当使用<c:param>标签为一个URL地址附加参数时,它会自动对参数值进行URL编码。例如,传递的参数值为“中国”,则将其转换为“%e4%b8%ad%e5%9b%bd”后再附加到URL地址后面,这也是使用该标签的最大好处
<c:url>语法格式:
(1)没有标签实体的情况
<c:url value="value"
[context="context"] [var="varName"]
[scope="page|request|session|application"]>
(2)有标签实体的情况,在标签体内指定构造的URL参数
<c:url value="value"
[context="context"] [var="varName"]
[scope="page|request|session|application"]>
<c:param>标签
</c:url>
参数:
value属性:用于指定构造的URL
context属性:用于指定导入同一个服务器下其他Web应用的名称
var属性:用于指定将构造的URL地址保存到域对象的属性名称文章来源:https://www.toymoban.com/news/detail-437502.html
scope属性:用于将构造好的URL保存到域对象中文章来源地址https://www.toymoban.com/news/detail-437502.html
到了这里,关于JSTL及Core标签库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!