JSTL

只愿长相守 提交于 2020-01-06 21:32:35

Java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库,是一个定制标签类库的集合,用
于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML 处理,甚至数据库和访问数据库
操作等。
  我们现在只讨论 JSTL 中最重要的标签,条件动作、迭代集合以及格式化数字和日期几个标签。
  核心标签库:http://java.sun.com/jsp/jstl/core 包含 Web 应用的常见工作,比如:循环、表达式
值、基本输入输出等。
  格式化标签库:http://java.sun.com/jsp/jstl/fmt 用来格式化显示数据的工作,比如:对不同区域
的日期格式化等。
  为了在 JSP 页面使用 JSTL 类库,必须以下列格式使用 taglib 指令:
  <%@taglib uri=”” prefix=””%>
  例如:<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
  前缀可以是任意内容,遵循规范可以使团队中由不同人员编写的代码更加相似;

四、标签的使用
4.1 条件动作标签
  条件动作指令用于处理页面的输出结果依赖于某些输入值的情况,在 Java 中是利用 if、if…else 和
switch 语句来进行处理的。在 JSTL 中也有 4 个标签,可以执行条件式动作指令:if、choose、when
和 otherwise。

  1. if 标签
      if 标签先对某个条件进行测试,如果该条件运算结果为 true,则处理它的主体内容,测试结果保存
    在一个 Boolean 对象中,并创建一个限域变量来引用 Boolean 对象。可以利用 var 属性设置限域变量
    名,利用 scope 属性来指定其作用范围。
      if 的语法有两种形式:没有主体内容、有主体内容
    没有主体内容
      该情况下:var 指定的限域变量由同一个 JSP 页面中后面的标签测试所决定。
    有主体内容
      主体内容为 JSP,若测试条件为 true,则处理 JSP。
      JSTL 中没有 else 标签,为了模拟 else 的情景,需要使用两个 if 标签,并且这两个标签为相反的条
    件。

<%
request.setAttribute(“num”, “1”);
%>
<c:if test="1==1"var="flag"></c:if><!flase><c:iftest="1==1"var="flag"></c:if><!flase><c:iftest="{'1==1'}" var="flag"></c:if> <!-- flase --> <c:if test="1==1" var="flag"></c:if> <!-- flase --> <c:if test="{'num1’}" var=“flag”></c:if>
<c:if test="${1
1}" var=“flag”></c:if>

  1. choose、when 和 otherwise 标签
      choose 和 when 标签的作用与 Java 中的 switch 和 case 关键字相似。也就是说:他们为相互排斥
    的条件式执行提供相关内容。choose 标签内部必须嵌有一个或多个 when 标签,每个 when 标签代表
    可以进行运算和处理的一种情况。otherwise 标签用于默认的条件代码块,如果所有的 when 标签的测
    试条件运算结果都不为 true,就会执行该代码块。如果有 otherwise 标签,它必须放在最后一个
    when 标签之后,否则会报错。
      choose 和 otherwise 标签没有属性,when标签则必须使用 test 属性设定一个条件,用于确定是
    否处理主体内容。
    格式:
    <%
    request.setAttribute(“num”, “1”);
    %>
    <c:if test="${num < 10 }">

num比10小

num比10大

... ... ... ...

注意:
1、choose标签中只能有when和otherwise标签,when和otherwise标签中可有其他标签
2、choose中至少有一个when标签
3、choose标签和otherwise标签没有属性,when标签必须要有test属性
4、otherwise标签必须放在最后一个when标签之后
5、当所有的when标签的条件都不成立时,才执行otherwise标签中的语句

  1. parseDate 标签
      此标签为指定区域解析日期和时间的字符串表示法。即解析一个代表着日期或时间的字符串。
    fmt:parseDate 标签有如下属性:
    <%
    request.setAttribute(“num”, “¥1,000.00”);
    request.setAttribute(“num1”, “123,456.789”);
    %>
    <fmt:parseNumber value=“20%” type=“percent”></fmt:parseNumber>

<fmt:parseNumber value="${num }" type=“currency”></fmt:parseNumber>

<fmt:parseNumber value="num1"type="number"var="aa"></fmt:parseNumber>{num1 }" type="number" var="aa"></fmt:parseNumber>{aa
}

<%
request.setAttribute(“num”, “$1,000,000.00”);
%>
<fmt:parseNumber type=“currency” parseLocale=“en_US”>
${num }
</fmt:parseNumber>

属性 描述 是否必要 默认值
value 要显示的日期 是 无
type date, time, 或 both 否 date
dateStyle full, long, medium, short, 或 default 否 default
timeStyle full, long, medium, short, 或 default 否 default
pattern 自定义格式模式 否 无
timeZone 显示日期的时区 否 默认时区
var 存储格式化日期的变量名 否 显示在页面
scope 存储格式化日志变量的范围 否 页面
使用该标签时,同样有两种语法:
没有主体内容
使用主体内容
除此之外还有许多其他标签,使用的时候查阅即可

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!