JSTL的部署及使用方法
库介绍:
Impl: taglibs-standard-impl-1.2.5.jar JSTL实现类库
Spec: taglibs-standard-spec-1.2.5.jar JSTL标准接口
EL: taglibs-standard-jstlel-1.2.5.jar JSTL1.0标签-EL相关
Compat: taglibs-standard-compat-1.2.5.jar 兼容版本
If you do not use JSTL 1.0 tags then the "taglibs-standard-jstlel" JAR may beomitted. If you do not use the XML library, then the Apache Xalan dependenciesmay also be omitted.
如果不用JSTL1.0版本的话,那么第三个EL jar包就没必要添加。实际应用中,一般添加前两个库就可以。
直接导入到Web-content目录下的WEB-INF中的lib文件夹
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 导入JSTL核心库,其他格式化之类的库同理
JSTL使用方法:
JSTL (JSP Standard Tag Library ,JSP标准标签库)
JSTL标签库分为5类:JSTL核心标签库、JSTL函数标签库、数据库标签库、I18N格式化标签库、XML标签库。
JSTL的核心标签库主要包括:表达式操作、流程控制、迭代操作和URL操作。以下是JSTL常用标签的用法总结:
一、表达式操作
1、
作用:用于显示数据的内容。语法1:没有本体内容
2、
如果“target”是一个Map,“property”指定的是该Map的一个键;如果“target”是一个bean,“property”指定的 是该bean的一个成员字段。 如果“target”表达式为null,容器会抛出一个异常。 如果“target”表达式不是一个Map或bean,容器会抛出一个异常。 如果“target”表达式是一个bean,但是这个bean没有与“property”匹配的成员字段,容器会抛出一个异常。 property:指定的target对象的属性。
3、
4、
二、流程控制
1、
2、
三、迭代操作
1、
2、
四、URL操作
1、
2、
3、
五、I18N格式化标签库
使用I18N格式化标签之前,需先插入以下指令:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
1、
作用:将数字格式化成数字、货币、百分比
语法:
属性说明:value:需要进行格式化的值
var:值的另一个变量声明
maxFractionDigits:保留的小数点个数
2、
作用:将字符串型的数字、货币、百分比格式化成数字
语法:
属性说明:value:需要进行格式化的值
var:值的另一个变量声明
3、
作用:格式化时间和日期
4、
5、
作用:在JSP 网页中设置默认时区。
6、
作用:在JSP网页中为该标签体内的代码段设置时区。
7、
作用:在JSP 网页中设置语言地区。
8、
作用:在JSP 网页中设置请求所采用的编码方式,等价于JSP中的request. setCharacterEncoding(String encoding)。
9、
作用:设置默认的消息资源。
10、
作用:在指定的消息资源中按关键字取出相应的消息内容。
11、
作用:在从消息资源中取出消息内容时,为消息内容设置动态参数。
12、
作用:为该标签体内的代码段设置一个消息资源。
二、常见错误
应用部署运行的时候出现JSP异常, 发生在使用JSTL库的时候: According to TLD or attribute directive in tag file, attribute value does not accept any expressions, 可能是因为使用了JSP2.0版本, 同时又没有使用JSTL core库的备用版本(RT库), 以下有两种处理方法:
1. 如果不想使用web-app_2_4.xsd 和jstl1.1 那么可以按照下面两种方式修改
1). 修改web.xml.
2). 使用JSTL core RT库
JSTL core库的有两种taglib伪指令, 其中RT库即是依赖于JSP传统的请求时属性值, 而不是依赖于EL来实现(称为EL库.JSP2.0将支持EL)
JSP中使用<%@ taglib uri=http://java.sun.com/jstl/core prefix="c"%>在2.3版本都可以,在2.4就不行了, 这是版本不兼容引起的,稍后将介绍servlet的版本。
只要将
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>改为<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c"%>
2:如果要使用jstl1.1(推荐) 则按照一下修改,很简单的。
jstl存在1.0和1.1的差异问题,用EL建议需要在1.1的版本下,
使用jstl1.1 只需要将
1.0的为
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
换成:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>