JSTL标签库

JSTL标签库

JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。

简介

JSTL的英文全称是JavaServer Pages Standard Tag Library,中文全称是JSP标准标识库。JSTL技术标准是由JCP(lava Community Process)组织的JSR052专家组发布,Apache组织将其列入Jakarta项目,Sun公司将JSTL的程序包加入互联网服务开发工具包内(Web Services Developer Pack(WSDP)),作为JSP技术应用的一个标准。
JSTL标签是基于JSP页面的,这些标签可以插入在JSP代码中,本质上JSTL也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。JSTL的目标是简化JSP页面的设计。对于页面设计人员来说,使用脚本语言操作动态数据是比较困难的,而采用标签和表达式语言则相对容易,JSTL的使用为页面设计人员和程序开发人员的分工协作提供了便利。
JSTL标识库的作用是减少JSP文件的Java代码,使Java代码与HTML代码分离,所以JSTL标识库符合MVC设计理念。MVC设计理念的优势是将动作控制、数据处理、结果显示三者分离。

背景

在JSP诞生之初,JSP提供了在HTML代码中嵌入Java代码的特性,这使得开发者可以利用Java语言的优势来完成许多复杂的业务逻辑。但是,随后开发者发现在HTML代码中嵌入过多的Java代码,程序员对于动辄上千行的JSP代码基本丧失了维护能力,非常不利于JSP的维护和扩展。基于上述的这个问题,开发者尝试着使用一种新的技术来解决上面这些问题。因此,从JSP1.1规范后,JSP增加了自定义标签库的支持,提供了Java脚本的复用性,提高了开发者的开发效率。
JSTL是SUN公司发布的一个针对JSP开发的新组件。JSTL允许用户使用标签(Tags)来进行JSP页面开发,而不是使用传统的JSP脚本代码方式开发。JSTL几乎能够做到传统JSP脚本代码能做的任何事情。

主要组成

JSTL包含了和以下操作相关的标签:
1、核心标签:核心标签库是整个JSTL中最常用的部分,主要由以下几部分组成:基本输入输出、流程控制、迭代操作和URL操作。负责Web应用的常见工作,如:循环、表达式赋值、基本输入输出等。
2、I18N格式标签库:用来格式化显示数据的工作如:对不同区域的日期格式化等。
3、XML标签库:用来访问XML文件的工作,支持JSP对XML文档的处理。
4、数据库标签库:SQL标签库包括了大部分访问数据库的逻辑操作,包括查询、更新、事务处理、设置数据源等。可以做访问数据库的工作。
5、函数标签库:用来读取已经定义的某个函数。

JSTL优点
1、简化了JSP和Web应用程序的开发。
2、在应用程序服务器之间提供了一致的接口,最大限度地提高了·Web应用在各应用服务器之间的移植。
3、允许JSP设计工具与Web应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。
4、以一种统一的方式减少了JSP中的Scriptlets代码数量,可以达到程序中没有任何Scriptlest代码。
JSTL封装了JSP开发中的常用功能。比如说,在没有JSTL时,通过Scriptlets来迭代输出某个List(Set),有了JSTL,就可以使用它的一系列的Tag进行迭代输出。由于JSTL是JSP2.0规范的一部分,所以最新的Web容器都会支持它。

使用条件
在JSP中使用JSTL标签需要具备如下两个条件。
条件一:要在JSP页面中使用JSTL标签,需使用taglib指令引用标签库。
条件二:要在JSP中使用JSTL标签,还需要下载安装JSTL实现(Implementation)。
JSTL1.2实现的下载地址为:https:jstl.dev.java.net,下载文件为jstl-impl-1.2.jar,将该文件复制到Web应用程序的WEB-INFlib文件夹中即可使用JSTL。
JSTL1.0实现的下载地址为:http://www.apache.org/dist/jakarta/taglibs/standard/,Windows用户下载jakarta-taglibs-standard-current.zip。下载后解压,在lib文件夹中有两个文件:·jstl.jar;·standard.jar.
将这两个文件复制到Web应用程序的WEB-INFlib文件夹中即可使用JSTL  。

JSTL标准标签库的作用

结合EL表达式来使用,代替jsp页面中的scriptlet。

JSTL的分类

o  core:核心类库 if foreach …

o fmt:格式化|国际化

o xml:已过时

o sql:已过时

o 函数库:平时很少使用

JSTL使用步骤

1、导入jar包 (jstl.jar和standard.jar)

2、在页面上导入标签库

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

3、引用方式:c标签所需功能

核心类库core需要掌握的内容

1、c:if

使用方式:满足的时候输出的内容

例如:

		<c:if test="${5>3}">
				5大于3
			</c:if>

2、c:forEach

使用方式

<c:forEach begin="从那里开始" end="到那里结束" step="步		
长" var="给变量起个名字" varStatus="循环状态变量">
	${i }--${vs.count }<br>
</c:forEach>

例如:

<c:forEach begin="1" end="3" items="${strList}" step="1" 				
var="str">
		${str}
		<br/>
</c:forEach>

3、c:set 和 c:choose的使用(了解)

<c:set var="count" value="4"/>
		<!-- 相当于 pageContext.setAttribute("count",3)  -->
		<c:choose>
			<c:when test="${ count ==1 }">
				计数1
			</c:when>
			<c:when test="${ count ==2}">
				计数2
			</c:when>
			<c:when test="${ count ==3 }">
				计数3
			</c:when>
			<c:otherwise>
				不在范围内
			</c:otherwise>
		</c:choose> 

重构需求

① 使用el结合jstl的方式,对学生信息列表进行重构

② 使用el对修改页的取值进行重构

③ 从学生列表页跳转到学生添加页,使用按钮绑定事件的方式 来实现

④  学生添加操作和学生修改操作,使用jquery的方式来提交表 单

⑤ 在学生信息列表页扩充修改按钮,删除按钮,配合列表第一列 的复选框来实现跳转到修改页的操作和执行删除操作

⑥  使用修改按钮跳转到修改页

⑦ 使用删除按钮执行删除操作

⑧ 使用删除按钮实现可批量删除操作

⑨ 批量删除时需要注意的问题

⑩ 在列表页上加入全选操作,列表实现隔行变色操作