10.1什么是Struts2标签库

对于一个 MVC 框架来说,重点是实现两个部分,一个是控制器部分,一个是视图部分。
Struts 2 框架也把重点放在了这两部分上:控制器主要由 Action 来提供支持,而视图则是由大量的标签来提供支持。
Struts 2 标签库使用 OGNL 表达式作为基础,实现对于集合、对象访问的功能。

10.2 Struts2标签分类

Struts 2 的标签非常多,大致分为两类,一类是用户界面标签,也称为 UI 标签;另一类
是非用户界面标签,也称为非 UI 标签。
(1) UI 标签主要用来生成 HTML 元素,按其功能可分为三类。
表单标签:主要用于生成 HTML 页面的 form 元素,以及普通表单元素的标签。
非表单标签:主要用于生成页面上的树、Tab 等标签。
Ajax 标签用于 Ajax(Asynchronous JavaScript And XML)支持的标签。

(2) 非 UI 标签主要用于数据访问和逻辑控制,按其功能,可分为两类。
数据标签:主要用来提供数据访问相关的功能。
控制标签:主要用来完成条件逻辑、循环逻辑的控制,也可用于对集合的操作。

10.3 使用Struts2标签

<%@ taglib prefix="s" uri="/struts-tags" %>

10.4 Struts2表单标签

10.5 Struts2数据标签

a) <s:property>

    property 标签的作用就是输出指定值。property 标签输出 value 属性指定的值,如果没有指定 value 属性,则默认输出 ValueStack 栈顶的值。
    该标签有如下几个属性。
    default:可选属性,如果输出的属性值为null,则显示该值
    案例:访问该页面的时候,传参和不传参,看看效果

b) <s:date>

c) <s:include>
    <s:include value="foot.jsp"></s:include>

10.6 Struts2控制标签

Struts 2 的非 UI 标签包括控制标签和数据标签,主要用于完成流程控制,数据标签主要用于访问 ValueStack 中的数据;控制标签可以完成输出流程控制,例如分支、循环

a) if/else

b) <s:iterator>

iterator 标签的属性如下所示。
    1.value:可选属性,指定被迭代的集合,被迭代的集合通常都使用 OGNL 表达式指定;如果没有指定 value 属性,则使用 ValueStack 栈顶的集合。
    2. id:可选属性,该属性指定了集合里元素的 ID(现已用 var 替代)。
    3.status:可选属性,指定迭代时的 IteratorStatus 实例,通过该实例可以判断当前迭代元素的属性,例如是否是最后一个,以及当前迭代元素的索引等。
    4.Begin:开始迭代的索引位置,开始索引从 0 开始。
    5.End:结束索引的索引位置,集合元素个数要小于或等于此结束索引。
    6.Step:迭代的步长,每次迭代时索引的递增值,默认为 1。

    如果指定 status 属性,通过指定该属性,在遍历集合时会有一个 IteratorStatus 实例对象,
    该实例对象包含如下几种常用方法。
    getCount:返回当前已经遍历的集合元素数目。
    isEven::返回当前遍历的元素索引是否为偶数。
    isOdd:返回当前遍历的元素索引是否为奇数。
    isFirst:返回当前遍历元素是否为集合的第一个元素。
    isLast:返回当前遍历元素是否为集合的最后一个元素。

c) 隔行变色效果(2种方式)![这里写图片描述](https://img-blog.csdn.net/20180105135202756?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk4NTY2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)