JSTL 基本知识点
2012-12-15 20:54 coffeescript 阅读(555) 评论(0) 编辑 收藏 举报功能:基本输入输出、流程控制、循环控制、XML文件解析、数据库SQL查询和国际化等。
JSTL是JCP提供的一套规范。使用时需要下载JSTL类库。
一、Core标记库
<c:out>标记用于在JSP中显示内容。
<c:set>标记用于将变量保存到JavaBeans属性中或者JSP页面的特定取值范围中。
<c:remove>用于删除所设定的变量。
<c:catch>用来处理所产生的违例,可将违例信息保存到指定变量。类似与try....catch。
<c:if>与Java语法中的if用法一致,必须有test。
<c:choose>不能单独使用,与<c:when>和<c:otherwise>配合使用,包含1~多个<c:when>和0或1个<c:choose>标记。
<c:when>与<c:choose>标记镶嵌使用,如果在同一个<c:choose>中还有<c:otherwise>,则<c:when>必须在<c:otherwise>之前。
<c:otherwise>在同一个<c:choose>标记中,如果所有的<c:when>的条件都没有成立,则执行<c:otherwise>标记所包含的内容,在同一个<c:choose>中, <c:otherwise>必须是最后一个标记。
在同一个<c:choose>下,当有若干个<c:when>都符合条件时,只有第一个符合条件的<c:when>被执行。
<c:forEach>是Core标记库最常用到的标记之一。相当与Java语法中的foreach,可以对数组、字符串、Map、Iterator、Collection对象中的成员对象进行遍历。
<c:forTokens>如果一个字符串的成员是由分隔符号分隔的,就可以用<c:forTokens>标记迭代处理被分隔的每个字符串片段,常用的分隔符是"," 、"|"、 "/"。
<c:import>把其他静态或者动态文件包含到本身的JSP页面中,它和JSP的<jsp:include>区别在于,<jsp:include>只能包含和自己在同一个WEB应用中的文件, <c:import>不仅能包含和自己在同一个WEB应用下的文件,还可以包含其他WEB应用或者其他网站的文件。url属性是必须的。
<c:url>标记可以输出一个url地址,使用它的最大好处是不需要自己计算相对路径,当WEB应用名称改变时,也不需要修改链接地址。
<c:redirect>重新定向到另外一个页面,使用效果与response.sendRedirect()方法相同。
<c:param>利用这个标记可以传递参数给被包含的文件。<c:param>标记有name和value属性,代表参数的名称和参数的值。
二、Format标记库,共有18个字符,国际化(I18N)
应用程序国际化分为4个方面,语言和国家,日期,数字格式,货币符号。
Format标记库作用:对JSP页面的国际化输出,对JavaWeb应用提供国际化支持。
Accept-Language包含用户所使用的语言和所属国家的信息。
1.<fmt:setLocale>标记用来指定所想使用的语言环境,value属性是必须的。
2.<fmt:setTimeZone>标记用来设置其他Format定制标记所使用的时区,即为设置时区的标记。value属性对应于时区名或者java.util.TimeZone类型的对象。
3.<fmt:timeZone>作用同上,但设定的时区只对其标记所包含的内容有效。
4.<fmt:formatDate>标记格式化和显示日期与时间。
5.<fmt:formatNumber>标记格式化数字。同时还可以格式化货币和百分数数据。type有三种属性:number(默认)、currency(货币数字)、percent(百分比),groupingUsed设置是否要对小数点前面的数字进行分组。
6.<fmt:parseNumber>标记解析数值,结果作为java.lang.Number类型对象返回,独有属性integerOnly={true|false},指出是否只解析所给数值的整数部分,默认为false。
7.解析数字或者日期时间数据的操作不适合在表现层完成,所以应尽量避免在JSP页面中使用<fmt:parseDate>和<fmt:parseNumber>标记。
8.<fmt:setBundle>对JSP页面上的文字输出进行国际化处理,需先指定资源文件束(Resource Bundle),basename属性是必须的,不应当包含任何本地化后缀或者文件扩展名。
9.<fmt:bundle>标记对标记所包含内容设置当前使用的资源束的路径和名称。资源束文件中{0}和{1}是参数化值的占位符。
10.<fmt:message>可以通过<fmt:param>标记的value属性来提供文本消息的参数化值。
11.<fmt:param>标记的value属性来提供文本消息的参数化值,无论参数化符号出现在消息文本的什么地方,<fmt:param>指定的值都将合并到从资源束所检索的消息文本中,参数化值可以通过其索引进行标识。
12.<fmt:message>标记所嵌套的<fmt:param>标记的顺序也很重要。
13.<fmt:requestEncoding>设定request对象封装的请求信息所采用的字符编码,类似于request.setCharacterEncoding()效果一样。默认为ISO-8859-1。
三、XML标记库
Document Object Model(DOM)
1.<x:parse>对指定的XML文件完成解析。
2.<x:out>输出XML文件内容。
3.<x:set>、<x:if>、<x:when>、<x:choose>、<x:forEach>、<x:otherwise>、<x:param>标记与Core标记库中的同名标记作用基本一样。
4.<x:transform>实现XSL样式表的转换。
四、SQL标记库
SQL标记库提供与关系数据库进行交互的相关标记,标记库中设定数据源、查询、更新和事务处理的标记。
1.<sql:setDataSource>标记获得数据源对象。eg.<sql:setDataSource dataSource="your JNDI name"/>。
2.<sql:query>标记执行SQL查询(select)操作。
3.<sql:param>对参数化的SQL语句进行赋值操作。
4.<sql:dateParam>标记为表示日期、时间或时间戳的参数进行赋值。
5.<sql:update>标记通过SQL语句完成对数据库数据的更新操作。
6.<sql:transaction>标记实现事务处理功能。
7.JSTL的XML和SQL标记库,虽然能够在JSP页面上实施复杂的功能,但是XML的解析与转换,SQL语句的运行都是不应该在表示层进行实施的功能,所以在JSP页面中不推荐直接使用XML和SQL标记库。
五、Functions标记库
定义的都是一些与字符串处理相关的函数,通过JSPEL来进行调用 eg.${fn:length("XXXX")},诸多函数不一一列举。
六、更多参考信息:
http://tomcat.apache.org/taglibs/site/tutorial.html
http://developer.51cto.com/art/200901/107110.htm
七、错误收集:
The JSP specification requires that an attribute name is preceded by whitespace即表示jsp中有的属性前面需要空格
eg.<c:out value="${param.username}" default="none"/><br/>