Struts2之标签库

目录

Struts2标签库

概述

分类

使用

控制标签

分支逻辑控制

循环遍历

数据标签

property

a

debug

表单标签


Struts2标签库

对于一个MVC框架而言,重点是实现两部分:业务逻辑控制器部分和视图页面部分。Struts2作为一个优秀的MVC框架,也把重点放在了这两部分上。控制器主要由Action来提供支持,而视图则是由大量的标签来提供支持。

  • 概述

在JavaWeb中,Struts2标签库是一个比较完善,而且功能强大的标签库,它将所有标签都统一到一个标签库中,从而简化了标签的使用,它还提供主题和模板的支持,极大地简化了视图页面代码的编写,同时它还提供对Ajax的支持,大大的丰富了视图的表现效果。与JSTL(JSP Standard Library,JSP标准标签库)相比,Struts2标签库更加易用和强大。

  • 分类

早期的JSP页面需要嵌入大量的Java脚本来进行输出,这样使得一个简单的JSP页面加入了大量的代码,不利于代码的可维护性和可读性。随着技术的发展,逐渐的采用标签库来进行JSP页面的开发,这使得JSP页面能够在很短的时间内开发完成,而且代码通俗易懂,大大的方便了开发者,Struts2的标签库就是这样发展起来的。

Struts框架对整个标签库进行了分类,按其功能大致可以分为两类

由图中可以看出,Struts2标签库主要分为两类:普通标签和UI标签。普通标签主要是在页面生成时,控制执行的流程。UI标签则是以丰富而可复用的HTML文件来显示数据。

普通标签又分为控制标签(Control Tags)和数据标签(Data Tags)。控制标签用来完成条件逻辑、循环逻辑的控制,也可以用来做集合的操作。数据标签用来输出后台的数据和完成其他数据访问功能。

UI标签又分为表单标签(Form Tags)、非表单标签(Non-Form Tags)和Ajax标签。表单标签主要用来生成HTML页面中的表单元素,非表单标签主要用来生成HTML的<div>标签及输出Action中封装的信息等。Ajax标签主要用来提供Ajax技术支持。

  • 使用

Struts2标签库被定义在struts-tags.tld文件中,我们可以在struts-core-2.3.24.jar中的META-INF目录下找到它。要使用struts2的标签库,一般只需要在JSP文件中使用taglib指令导入Struts2标签库。

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

  • 控制标签

分支逻辑控制

<s:if> <s:elseif> <s:else>用于程序的分支逻辑控制

<s:if test="表达式1">
                   标签体
           </s:if>
           <s:elseif test="表达式2">
                   标签体
           </s:elseif>
           <s:else>
                  标签体
           </s:else>

循环遍历

<s:iterator>,主要用于对集合中数据进行迭代,它可以根据条件遍历集合中的数据

Iterator标签属性
属性 是否必须 默认值 类型 描述
begin 0 Integer 迭代数组和集合的起始位置
end 数组或集合的长度减1,假如step为负则为0 Integer 迭代数组和集合的结束位置
status False Boolean 迭代过程中的状态
step 1 Integer 指定每一次迭代后索引增加的值
value String 迭代的数据或集合对象
var String 将生成的Iterator设置为page范围的属性
id String 指定了集合元素的id,现已用var代替

在表中,如果在<s:iterator>标签中指定status属性,那么通过该属性可以获取迭代过程中的状态信息,如:元素数、当前索引值

status获取状态信息
方法 说明
st.count 返回当前已经遍历的集合元素的个数
st.first 返回当前遍历元素是否为集合的第一元素
st.last 返回当前遍历元素是否为集合的最后一个元素
st.index 返回遍历元素的当前索引值
st.even 返回当前遍历的元素的索引是否为偶数
st.odd 返回当前遍历的元素的索引是否为奇数
  • 数据标签

数据标签主要用于各种数据访问相关的功能以及Action的调用

property

<s:property>标签用于输出指定的值,通常输出的是value属性指定的值,该标签的属性如下

属性 是否必选 说明
id 指定该元素的标识
default 如果要输出的属性值为null,则显示default属性的指定值
escape 指定是否忽略HTML代码
value 指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值

a

<s:a>标签用于构造HTML页面中的超链接,其使用方式与HTML中的<a>标签类似

属性 是否必须 类型 描述
action String 指定超链接Action地址
href String 超链接地址
namespace String 指定Action地址空间命名
id String 指定其id
method String 指定Action调用方法

debug

<s:debug>标签用于在调试程序时输出更多的调试信息,主要输出ValueStack和StackContext中的信息,该标签只有一个id属性

在使用debug标签后,网页中会生成一个[Debug]的链接,单击该链接,网页中将输出各种服务对象的信息

  • 表单标签

<s:form>、<s:submit>、<s:textfield>、<s:textarea>、<s:password>、<s:radio>、<s:checkboxlist>、<s:select>、<s:hidden>、<s:reset>

	<s:form action="DemoAction" namespace="/" theme="xhtml" >
		<s:textfield name="name" label="用户名"  ></s:textfield>
		<s:password name="password" label="密码" ></s:password>
		<s:radio list="{'男','女'}" name="gender" label="性别" ></s:radio>
		<s:radio list="#{1:'男',0:'女'}" name="gender" label="性别" ></s:radio>
		<s:checkboxlist list="#{2:'乒乓球',1:'羽毛球',0:'篮球'}" name="habits" label="爱好" ></s:checkboxlist>
		<s:select list="#{2:'大专',1:'本科',0:'硕士'}" headerKey="" headerValue="---请选择---" name="edu" label="学历" >
		</s:select>
		<s:file name="photo" label="照片" ></s:file>
		<s:textarea name="desc" label="个人简介" ></s:textarea>
		<s:submit value="提交" ></s:submit>
	</s:form>

猜你喜欢

转载自blog.csdn.net/mmake1994/article/details/81667428
今日推荐