JSTL初学

JSTL
一、简介
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”%>
前缀可以是任意内容,遵循规范可以使团队中由不同人员编写的代码更加相
似;所以,建议使用事先设计好的前缀。此时需要导入两个 jar 包
直接放入 Tomcat 的 lib 目录下即可。
二、标签的使用

  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 标签,并
    且这两个标签为相反的条件。
  2. choose、when 和 otherwise 标签
    choose 和 when 标签的作用与 Java 中的 switch 和 case 关键字相似。也
    就是说:他们为相互排斥的条件式执行提供相关内容。choose 标签内容部必须
    嵌有一个或多个 when 标签,每个 when 标签代表可以进行运算和处理的一种
    情况。otherwise 标签用于默认的条件代码 块,如果所有的 when 标签的测试
    条件运算结果都不为 true,就会执行该代码块。如果有 otherwise 标签,它必
    须放在最后一个 when 标签之后,否则会报错。
    choose 和 otherwise 标签没有属性,when 标签则必须使用 test 属性设定
    一个条件,用于确定是否处理主体内容。
    注意:
  1. 迭代标签
    forEach 标签
    forEach 是将一个主体内容迭代多次,或者迭代一个对象集合。可以迭代的
    对象包括所 有的 java.util.Collection 和 java.util.Map 接口的实现,以及对象或
    者基本类型的数组。他还可 以迭代 java.util.Iterator 和 java.util.Enumeration,但
    不能在多个动作指令中使用 Iterator 或者 Enumeration,因为 Iterator 或者
    Enumeration 都不能重置(reset)。 各属性含义如下:
    varStatus 属性的使用:
    forEach 的语法有两种形式:
    将 body 内容重复一定的次数:
    用于迭代一个对象集合:
    <%
    List list = new ArrayList();
    for (int i = 0; i < 10; i++) {
    list.add(“A:” + i);
    }
    pageContext.setAttribute(“li”, list);
    %>
List内容当前下标成员总数是/否first成员是/否为last成员
${item}${idx.index}${idx.count }${idx.first }${idx.last}
内容主体为 JSP,对于每一次迭代,forEach 标签都会创建一个限域变量, 其名称通过 var 属性设置。利用 forEach 迭代一个 Map,分别利用 key 和 value 属性引用一个 Map 键和一个 Map 值。 <% Map map = new HashMap(); map.put("map1", "shsxt"); map.put("map2", "bjsxt"); map.put("map3", "sxt"); pageContext.setAttribute("map", map); %>

${myMap.key}:
${myMap.value}

</c:forEach>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值