JSTL 展现页面内容

祝恩师们节日快乐! 

        JSP 标准标记库(JSP Standard Tag Library,JSTL)主要功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问等等。在MVC模式中作为页面展现jstl是一个不错的选择,使用起来也感觉比较舒服。现将常用的标签介绍如下:

Core Actions Action    Description
 
<c:catch>    主要用于异常的捕获
 
<c:choose>    相当于switch的作用
 
<c:forEach>    主要用于集合、数组等等的迭代
 
<c:forTokens>    主要用于字符串的迭代
 
<c:if>    条件语句
 
<c:import>    Imports a URL
 
<c:otherwise>    相当于switch中的default
 
<c:out>    主要用于输出
 
<c:param>    主要用于为 <c:import> or <c:url>指定参数
 
<c:redirect>    重定向
 
<c:remove>    Removes a scoped variable
 
<c:set>    Creates a scoped variable
 
<c:url>    重写url
 
<c:when>    相当于switch中的case
 

一、在jsp中要使用jstl标签首先要声明对标签的引用:

1.jakarta-taglibs-standard-1.0版本声明
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

2.jakarta-taglibs-standard-1.1版本声明
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

二、使用

1.<c:set>定义变量
(1)语法:<c:set var=" " name=" " scope=" " value=" " expression=" "/> scope 属性是可选的,其缺省值是 page 。
(2)例子:<c:set var="name" value="yourName" />

2.<c:out>输出语句
(1)语法:<c:out value=" " expression=" " default=" " expression=" " escapeXml="boolean"/>

escapeXml 属性也是可选的。true:输出代码,false:输出真正内容。它控制当用 <c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 < 、 > 和 & )。

带缺省内容的 <c:out> 操作示例
Hello <c:out value="${user.username}" default=="Guest"/>! default属性作用于如果提供的变量不存在则使用该属性定义的值。

禁用转义的 <c:out> 操作示例
<c:out value="${user.company}" escapeXml=="false"/>

组合静态文本和多个 EL 表达式以指定动态属性值:
<c:out value="Hello ${user.firstName} ${user.lastName}"/>

<1>.点运算符通常用于访问对象的属性。如在表达式 ${user.firstName} 中,使用点运算符来访问 user 标识符所引用对象的名为firstName 的属性。当被访问的属性本身是对象时,可以递归地应用点运算符。例如,如果我们虚构的 user 对象有一个实现为 Java 对象的address属性,那么也可以用点运算符来访问这个对象的和。例如,表达式 ${user.address.city} 将会返回这个地址对象嵌套的 city 属性。

<2>.方括号运算符用来检索数组和集合的元素。例如,表达式 ${urls[0]} 返回 urls 标识符所引用的数组或集合的第1个元素。
在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${commands["dir"]} 返回与 commands 标识符所引用的 Map 中的 "dir" 键相关联的值。此外,点运算符和方括号运算符还可以互操作。例如,如果数组的元素本身是对象,则可以使用方括号运算符来检索该数组的元素,并结合点运算符来检索该元素的一个特性(例如 ${urls[0].ip}。

(2)例子:
<c:out var='name'/>

3.<c:if>条件语句
(1)语法:<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
test属性定义的是条件表达式。

(2)例子:
<c:if test="${sessionScope.list!=null and sessionScope.list!=''}">
  <c:set var="list" value="${list}," scope="session" />
</c:if>

<c:if test="${pageContext.request.method=='POST'}">

4.迭代
(1)语法:
<c:forEach items='${primitiveValues}' var='item'>
   value = <c:out value='${item}'/><br>
</c:forEach>
         实现迭代内容的主要 JSTL 操作是 <c:forEach> 定制标记。该标记支持两种不同样式的迭代:整数范围上的迭代(类似 Java 语言的 for 语句)和集合上的迭代(类似 Java 语言的 Iterator 和 Enumeration 类)。
<c:forEach> 标记的语法。 begin 和 end 属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终止值。当使用 <c:forEach> 在整数范围内进行迭代时,这两个属性是必需的,而其它所有属性都是可选的。 当出现 step 时,它也必须是整数值。它指定每次迭代后索引的增量。
items可以为:List, LinkedList, Vector, ArrayList, Stack,Hashtable, HashMap, TreeMap,WeakHashMap,java.lang.Object[],java.lang.String,java.util.Iterator,java.util.Enumeration。

(2)例子:
<c:forEach var='item' begin='5' end='10'>
   value = <c:out value='${item}'/><br>
</c:forEach>
输出结果:5 6 7 8 9 10.

<c:forEach var='item' begin='5' end='10' step='2'>
   <c:out value='${item}'/>
</c:forEach>
输出结果:5 7 9.

<c:forEach items='ONE, TWO, THREE, FOUR' var='item'>
   <c:out value='${item}'/>
</c:forEach>
输出结果:ONE TWO THREE FOUR.

<c:forTokens items='ONE | TWO | THREE | FOUR' delims='|' var='item'>
   <c:out value='${item}'/>
</c:forTokens>
输出结果:ONE TWO THREE FOUR.

<c:forTokens items='(A B C)-(D E F)' delims='()' var='item'>
   <c:out value='${item}'/><br>
</c:forTokens>
输出结果:(A B C) - (D E F)

5.条件选择语句
(1)语法:
<c:choose>
  <c:when test="testCondition">
 body content
 </c:when>
 <c:otherwise>
        <c:out value="${param.enter}" />
        <br />
  </c:otherwise>
</c:choose>
(2)例子:
<c:choose>
      <c:when test="${param.enter=='1'}">One
      <br />
      </c:when>

      <c:when test="${param.enter=='2'}">Two
      <br />
      </c:when>

      <c:otherwise>
        <c:out value="${param.enter}" />
        <br />
      </c:otherwise>
    </c:choose>

6.异常语句:
(1)语法:
<c:catch var="e">
 body-condition
</c:catch>
(2)例子:
<c:catch var="e">
 10 divided by 0 is
 <c:out value="${10/0}" />
 <br />
</c:catch>

<c:import url='http://www.mysite.com/mydoc.txt'/>

7.格式化输出:
(1)语法:
  <fmt:formatNumber value="numericValue"
    [type="{number|currency|percent}"]
    [pattern="customPattern"]
    [currencyCode="currencyCode"]
    [currencySymbol="currencySymbol"]
    [groupingUsed="{true|false}"]
    [maxIntegerDigits="maxIntegerDigits"]
    [minIntegerDigits="minIntegerDigits"]
    [maxFractionDigits="maxFractionDigits"]
    [minFractionDigits="minFractionDigits"]
    [var="varName"]
    [scope="{page|request|session|application}"]/>
type:可以是currency、 number、 和percent。

(2)例子:
<fmt:formatNumber value="12" type="currency" pattern=".00元"/> 将显示 12.00元

<fmt:formatNumber value="12" type="currency" pattern=".0#元"/> 将显示 12.0元

<fmt:formatNumber value="1234567890" type="currency"/> 将显示 ¥1,234,567,890.00 
(货币符号与web服务器的 locate 设定相关)

<fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/> 将显示 123,456.79

<fmt:formatNumber value="12" type="percent" />将显示 1,200%

<fmt:formatNumber value="${requestScope.money}" type="currency" pattern="0.00元"/>

<fmt:formatNumber value="500000.01" groupingUsed="false" />
 500000.01
<fmt:formatNumber value="98.6" minIntegerDigits="4"/>
 0,098.6
<fmt:formatNumber value="98.6" minIntegerDigits="4" groupingUsed="false"/>
 0098.6
<fmt:formatNumber value="3.141592653589" maxFractionDigits="2"/>
 3.14
<fmt:formatDate value=”${now}” pattern="yyyy-MM-dd"/>

<fmt:message key="Welcome" />

WEB-INF/classes/messages_en.properties
内容:index.num=Welcome to the JSTL
<fmt:message key='index.num' var='msg' scope='request'/>

<context-param>
      <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
      <param-value>zh_CN</param-value>
</context-param>

<fmt:setLocale value='CN'/>
<fmt:requestEncoding value='GB2312'/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值