JSTL

Posted valdisw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL相关的知识,希望对你有一定的参考价值。

简介

JSTL(JSP Standard Tag Library, JSP标准标签库),扩展了JSP标签的功能,在JSP中能够用更少代码实现更复杂的操作。

要使用JSTL,需要导入jar包到项目中

 JSTL的标签分为五类:

  • 核心标签(core),以c开头
  • 格式化标签(format),以fmt开头
  • XML标签,以xml开头
  • SQL标签,以sql开头
  • 函数标签,以fn开头

使用

仅仅导入了库还不能直接用JSTL,还需要在相应JSP页面中通过taglib指令导入标签库。这里以JSTL核心标签库(core)为例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

导入之后就可以使用JSTL标签了。

 

截止目前,JSTL核心库的标签共13个,分成如下三类:

  • 表达式控制:out、set、remove
  • 流程控制:catch、if、choose、when、otherwise、forEach、forTokens
  • URL操作:import、url、redirect

 out - 页面输出:

<c:out value="val"></c:out>    <%--页面中显示val字样-->

其中val可为常量也可为变量。

如果是常量,直接使用字面值即可。

如果是变量,需要使用EL表达式${表达式},更多关于EL表达式详见另一篇博客

当变量不存在时,通过设置out标签的default属性,用来输出value变量不存在的情况:

<c:out value="val" default="WTF"></c:out>

 如果val中包含转义字符(&lt、&gt等),需要设置out标签的escapeXml属性为false:

<c:out value="&lt2333&gt" escapeXml="false"></c:out>    <%--页面中显示<2333>字样-->

 

set - 定义值:

可以在某个作用域中定义值,也可以在JavaBean中定义值。

<%-- 在session作用域中定义变量username,值为"ValdisW" -->
<c:set var="username" value="ValdisW" scope="session"></c:set>
<%-- 或者 -->
<c:set var="username" scope="session">ValdisW</c:set>

当给JavaBean中定义值时,需要在此之前使用useBean注册好一个JavaBean。

<%-- 给id为essay的JavaBean的id属性设置为e12345 -->
<c:set target="${essay}" property="id" value="e12345"></c:set>
<%-- 当然这里的value的值也可以写在标签对中间 --->

 

remove - 删除变量

只能删除某个作用域中定义的变量,不可以删除JavaBean的。

<c:remove var="username" scope="session"></c:remove>

 

以上是关于JSTL的主要内容,如果未能解决你的问题,请参考以下文章

JSTL的if-else表式

jsp&el&jstl-01

JSTL

什么是Taglib?

可以注释掉 JSTL 代码吗?

El表达式详解