代码改变世界

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/>