JSTL标签库【一看必懂】

本文介绍了JSTL标签库的基本概念及使用方法,详细解释了核心标签库、条件标签、迭代标签等常见标签的使用场景,并展示了如何利用这些标签简化JSP页面的开发流程。

一、JSTL标签库简介

JSTL全称 JSP Standard  Tag Library,常被用来代替传统的Java片段语言来实现页面逻辑,与控制程序输出的EL表达式相结合,两者相辅相成。

二、JSTL标签库使用之前的准备

在使用JSTL标签之前,先要导入jstl.jar的包,如果是通过Maven创建项目的话,直接在pom.xml里添加依赖即可。还需要在JSP页面开头添加指令。uri是指tld文件中某个库的uri,prefix是指前缀,如果是c.tld库中的,一般写成c,可以区别包里相同的标签。然后就可以用如<c:out/>这样的格式调用标签了。

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

三、常用标签库的用法

1.核心标签库

1.1 通用标签

1.1.1 <c:out>

语法格式:

<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>
value值为显示的值,引号内可以写EL表达式,[ ]内属性为非必填属性,escapeXml的默认值为true,代表其中的标签就按照字符串显示,不按照标签语义进行显示,default为当value值为null时,显示的默认值。

1.1.2 <c:set>

语法格式1:

<c:set value="value" var="name" [scope="{page|request|session|application}"]/>
这句话就相当于在某个特定范围内加一个属性。

语法格式2:

<c:set value="Mike" target="${person}" property="name"/>
把WEB域中某个属性key值为person的JavaBean对象的name属性值赋成value值。

1.1.3 <c:remove>

语法格式:

<c:remove var="person" scope="request"/>
移除某个域中的某个名为var的属性值

1.1.4 <c:catch>

语法格式:

<c:catch var="exception">
<%
	int a = 5 / 0;
%>
</c:catch>
<c:out value="${exception}"/>
捕获异常。

1.2 条件标签

1.2.1 <c:if>

<c:if test="${5 / 1 == 5}">
Body
</c:if>
test的中的表达式就相当于if()括号中的语句。Body就相当于test的值为true后执行的语句。

1.2.2 <c:choose>

1.2.3 <c:when>

1.2.3 <c:otherwise>

以上三个标签基本一起用,choose为父标签,作为选项的开始,每个when是一个选项,最后的其它就是otherwise。

基本语法:

<c:choose>
	<c:when test="${5 / 1 == 1}">
		BodyA
	</c:when>
	<c:when test="${5 / 1 == 2}">
		BodyB
	</c:when>
	<c:otherwise>
		BodyC
	</c:otherwise>
</c:choose>

1.3 迭代标签

<c:forEach>

假设servlet将数据存在某个WEB域中,以下是两种容器迭代方式的代码:

<%
	List<Person> list = new ArrayList<Person>();
	list.add(new Person("kkk"));
	list.add(new Person("sss"));
	list.add(new Person("jjj"));
	application.setAttribute("list_1", list);
	Map<String, Person> map = new HashMap<String, Person>();
	map.put("a", new Person("aaa"));
	map.put("b", new Person("bbb"));
	map.put("1", new Person("ccc"));
	request.setAttribute("map", map);
%>
<c:forEach items="${list_1}" var="person" begin="0" end="2" step="1">
	${person.name }
</c:forEach>	
<c:forEach items="${map }" var="entry" begin="0" end="2" step="1"> <!-- 遍历Map类对象,先转换为EntrySet,再遍历 -->
	${entry.key } ${entry.value.name }<br>
</c:forEach>

1.4 URL标签

1.41 <c:import>

<c:import url=""/>与<jsp:include page=""/>都是动态加载,但是import更灵活,可以加载WEBAPP范围外的url。

1.42 <c:redirect>

用于重定向到某个URL,语法格式:

<c:redirect url="value" [context="context"]/>

1.43 <c:url>

用于产生一个链接,语法格式:

<c:url value=""[context=""] [var=""] [scope=""] />

2.国际化标签库

2.1 <fmt:formatDate>  日期格式化

语法格式:

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日HH点mm分ss秒"/>
2.2 <fmt:formatNumber> 数字格式化

语法格式:

<fmt:formatNumber value="${5/3 }" pattern=".0000"/>
小数点保留四位

3.数据库标签库

3.1 <sql:setDataSource>  准备数据库

对于没有默认数据库的JSP页面,该标签能准备一个数据库以供使用。语法格式:

<sql:setDataSource var="demo" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db" 
user="root" password="admin" />
var代表数据库的变量名,在稍后的查询将会用到

3.2 <sql:query>  查询数据库

在连接了数据库后,即可使用该标签执行SQL语句查询数据库。查询后的结果集存在rs中,然后用<c:forEach>标签遍历结果集的每一行记录。语法格式:

<sql:query var="rs" dataSource="${ demo}">
SELECT * FROM info
</sql:query>
<table>
<c:forEach items="${rs.rows }" var="row" varStatus="s">
	<tr>
		<td>${s.index }</td>
		<td>${row.name }</td>
		<td>${row.age }</td>
	</tr>
</c:forEach>
</table>

也可以将Body中的sql语句写到标签里面。

<sql:query var="rs" dataSource="${ demo}" sql="SELECT * FROM info">

3.3 <sql:update>  更新数据库

语法格式1:

<sql:update var="update" sql="" dataSource="${demo }"/>
语法格式2:

<sql:update var="update" dataSource="${demo }">
UPDATE info SET age=? where name=?
<sql:param value="1"/>
<sql:param value="xxx"/>
</sql:update>


JSTLJSP Standard Tag Library ,JSP标准标签库)是个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。   JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。   两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。可以配置 ScriptFreeTLV 验证器以在 JSP 页面中禁用各种类型的 JSP 脚本元素 — scriptlet、表达式和声明。类似地,PermittedTaglibsTLV 验证器可以用来限制可能由应用程序的 JSP 页面访问的定制标记库集(包括 JSTL 标记库)。   尽管 JSTL 最终将会成为 J2EE 平台的需组件,但目前只有少数应用程序服务器包括它。JSTL 1.0 的参考实现可作为 Apache 软件基金会(Apache Software Foundation)的 Jakarta Taglibs 项目(请参阅参考资料)的部分而获得。可以将该参考实现中的定制标记库合并到任何支持 JSP 1.2 和 Servlet 2.3 规范的服务器,以添加对 JSTL 的支持。   如果要使用JSTL,则须将jstl.jar和 standard.jar文件放到classpath中,如果你还需要使用XML processing及Database access (SQL)标签,还要将相关JAR文件放到classpath中,这些JAR文件全部存在于下载回来的zip文件中。这个zip文件可以从http://jakarta.apache.org/builds/jakarta-taglibs/releases/standard/jakarta-taglibs-standard-1.0.zip下载。 .
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值