七、Struts2的标签库

一、数据标签的应用

(1)。property标签

property标签用于获取数据值,并将数据值直接输出到页面之中,其中属性如下

default 可选、escape可选、 escapeJavaScript可选、value可选

(2)。set标签

set标签用于定义一个变量,通过此标签可以为所定义的变量赋值,以及设置变量的作用域(application、request、session)。默认情况下,通过set标签定义的变量被放置到值栈之中。set标签所包含的属性及说明如下表

名称         是否必须     类型              说明

scope         可选        String        设置变量使用域,可以是application、request、session、page或action,默认值为action

value         可选        String        设置变量的值

var           可选        String        定义变量的名称

set标签中还包含id属性与name属性,这两个属性已经过时了

set标签的使用

<s:set var="uesrname" value="测试set标签" scope="request"><s:set>

<s:property defalut="没有数据!" value="#request.username"/>

(3)。a标签

a标签用于构建一个超链接,a标签属性及说明

名称        是否必须      类型             说明

action      可选          String          将超连接的地址指向action

href        可选          String          超连接地址

id          可选          String          设置HMTL中的属性名称

method      可选          String          如果超链接的地址指向action,method同时可以为action声明所调用的方法

namespace   可选          String          如果超链接的地址指向action,namespace可以为action声明名称空间

(4)。param标签

param标签主要用于对参数赋值,它可以当作其他标签的子标签。param标签属性及说明

名称        是否必须      类型             说明

name        可选          String           设置参数名称

value       可选          Object           设置参数数值

(5)。action标签

action标签,它用于执行一个Action请求。当在一个JSP页面中通过action标签执行Action请求时,可以将Action的返回结果输出到当前页面之中,也可以不输出,其标签属性及说明

名称                  是否必须      类型             说明

executeResult         可选          String           是否使用Action返回到执行结果,默认值为false

flush                 可选          boolean          输出结果是否刷新,默认值为true

ignoreContextParams   可选          boolean          是否将页面请求参数,传入被调用的Action,默认值为false

name                  必须          String           Action对象所映射的名称,即struts.xml中配置的名称

namespace             可选          String           指定名称空间的名称

var                   可选          String           引用引action的名称

(6)。push标签

push标签用于将对象或值压入值栈之中放置到顶部。因为值栈中的对象可以直接调用的,所以,push标签主要是简化操作。用于声明压入值的对象,其使用方法如下:

<s;push value="#request.student"></s:push>

(7)。date标签

date标签用于格式化日期时间

名称         是否必须         类型        说明

format       可选             String      设置格式化日期的样式

name         必须             String      日期值

nice         可选             boolean     是否输出给定日期与当前日期之间的时差,默认值为false,不输出时差

var          可选             String      格式化时间的名称变量,通过此变量可以对其进行引用

(8)。include标签

Struts2的include标签的作用类型于JSP中的<include>动作标签,也用于包含一个页面,但Struts2的include标签的功能更加强大,它可以通过param标签向目标页面中传递请求参数。

<%@include file="/pages/common/common_admin.jsp"%>

(9)。url标签

一个Action对象的URL映射地址包含称名称空间、调用方法等多个参数,这样的URL可以直接进行编码。也可以使用Struts2框架提供的url标签自动生成URL地址。

名称                    是否必须    类型     说明

action                   可选       String    Action对象的地址映射URL,也就是说Action对象的访问地址

anchor                   可选       String    此URL的锚点

encode                   可选       boolean   是否参数进行编码,默认值为true

escapeAmp                可选       String    是否将“&”转义为“&amp”

forceAddSchemeHostAndPort 可选      boolean   是否添加URL的主机地址及端口号,默认值为false

includeContext           可选       boolean   生成URL是否包含上下文路径,默认值为true

includeParams            可选       String    是滞包含可选参数,它的可选值为none、get、all,默认值为none

method                   可选       String    指定请求Action对象所调用的方法

namespace                可选       String    指定请示Action对象映射地址的名称空间

scheme                   可选       String    指定生成URL所使用的协议

value                    可选       String    指定生成URL的地址值

var                      可选       String    定义生成URL变量名称,可以通过此名称引用URL

 

二、控制标签的应用

(1)、if标签

if标签是Struts2提供一个流程控制标签,与Java语言相同,Struts2的标签同时支持if、else if、else的语句判断其标签如下:

<s:if>

用于在满足某个条件下的情况下,执行标签体中的内容,<s;if>标签可以单独使用

<s:elseif>

此标签需要与<s;if>标签配合使用,不不满足<s:if>标签中条件的情况下,判断是否满足<s;elseif>标签中的条件,如果满足引标签中的条件,那么将执行<s:elseif>标签体中的内容。

<s:else>

些需要与<:if>标签或<s:elseif>标签配合使用,当不满足所有条件的情况下,可以使用<s;else>标签来执行引标签中的内容。

<s:if test="表达式(布尔值)">

   输出结果。。。

</s:if>

<s:elseif test="表达式(布尔值)">

  输出结果。。。

</s:elseif>

可以使用多个<s:elseif>

...

<s:else>

  输出结果。。。

</s:else>

 

(2)、iterator标签

它可以根据循环条件,遍历数组和集合类中的所有或部分数据,iterator标签所包含的属性如下

名称          是否必须     类型       说明

begin         可选         Integer    指定迭代数组或集合的起始位置,默认值0

end           可选         Integer    指定迭代数组或集合的结束位置,默认为集合或数组的长度

status        可选         String     迭代过程中的状态

step          可选         Integer    设置迭代的步长,指定此值,每一次迭代后,其值将在原来索引值的基础上增加step值,默认1

value         可选         String     指定迭代的集合或数组对象

var           可选         String     设置迭代元素的变量,如果指定此属性,所迭代的变量将压入到值栈之中

 

在iterator标签的属性中,status属性用于获取迭代过程中的状态信息。在Struts2框架的内部结构中,status属性实质是获取了Struts2封装的一个迭代状态的对象,此对象为org.apache.struts.views.jsp.IteratorStatus,通过些对象可以获取到迭代过程中的如下信息。

**元素数

IteratorStatus对象提供了getCount()方法,来获元素数,如果status属性设置 为“st”,通过“st.count”获取元素数

**是否为第一个元素

IteratorStatus对象提供了isFirst()方法,来判断是否为第一个元素,如果status属性设置 为“st”,通过“st.first”获取是否为第一个元素

**是否为最后一个元素

IteratorStatus对象提供了isLast()方法,来判断是否为最后个元素,如果status属性设置 为“st”,通过“st.last”获取是否为最后一个

**当前索引

IteratorStatus对象提供了getIndex()方法,来获取当前索引,如果status属性设置 为“st”,通过“st.index”获取当前索引

**索引值是否为偶数

IteratorStatus对象提供了isEvetn()方法,来判断当前索引是否为偶数,如果status属性设置 为“st”,通过“st.even”判断当前索引值是否为偶数

**索引值是否为奇数

IteratorStatus对象提供了isOdd()方法,来判断当前索引是否为奇数,如果status属性设置 为“st”,通过“st.odd”判断当前索引值是否为奇数

 

三、表单标签的应用

(1)、常用的表单标签与通用属性

常用的表单标签及说明

名称                 说明

form标签            用于生成一个form表单

hidden标签          用于生成一个HTML中的隐藏表单元素,相当于使用HTML代码<input type="hidden">

textfield标签       用于生成一个HMTL中的文本框元素,相当于使用HMTL代码<input type="text">

password标签        用于生成一个HMTL中的密码元素,相当于使用HMTL代码<input type="password">

radio标签           用于生成一个HMTL中的单选按钮元素,相当于使用HMTL代码<input type="radio">

select标签          用于生成一个HMTL中的下拉列表元素,相当于使用HMTL代码<select><option></option></select>

textarea标签        用于生成一个HMTL中的文本框元素,相当于使用HMTL代码<textarea></textarea>

checkbox标签        用于生成一个HMTL中的文本框元素,相当于使用HMTL代码<input type="checkbox">

checklist标签       用于生成一个HMTL中的文本框元素,相当于使用HMTL代码<input type="checklist">

submit标签          用于生成一个HMTL中的文本框元素,相当于使用HMTL代码<input type="submit">

reset标签           用于生成一个HMTL中的文本框元素,相当于使用HMTL代码<input type="reset">

 

表单标签常用的属性及说明

名称               说明

name            指定表单元素的name属性

title           指定表单元素的title属性

cssStyle        指定表单元素的style属性

cssClass        指定表单元素的class属性

required        用于在lable上添加“*”号,它的值为布尔类型,如果主true,则添加为“*”如果为false,则不添加

disable         指定表单元素的tdisable属性

value           指定表单元素的value属性

labelposition   指定表单元素的lable的位置,默认值为“left”

requirepostion   指定表单元素的lable上添加“*”号的位置,默认值为“right”

 

(2)更必默认的主题样式

Struts2提供 的表单标签,将表单中的元素放置到了一个表格之中,而应用了一定的CSS样式设置,原因就是,在默认的情况下,Struts2提供了表单标签应用了内置的主题样式

主题样式的设置可以应用到Struts2中的表单标签中与UI标签上,默认情况下,Struts2提供了4种主题样式:

**Simple

simple主题的功能较弱,它只提供了简单的HTML输出

**Xhtml

xhmtl主题是在simple之上的扩展,它提供了简单的布局样式,可以将元素用于表格布局中,也提供了lable的支持。

**css_xhtml

css_xhtml主题在xhtml主题基础上进行的扩展,它在功能上强化了xhtml主题在CSS上的样式控制

**ajax

ajax主题是在css_xhmtl主题上扩展,它在功能上主要强化了css_xhtml主题在Ajax方面的应用

默认情况下Struts2应用的是xhtml主题

 

四、拦截器

(1)、了解拦截器

  拦截器可以动态增强Action对象的功能,在Struts2与ServletAPI进行解藕,Action对请求的处理不依赖于Servlet API,表单重复提交、对象类型转换、文件上传,还ModelDriven操作,都离不开拦截器。

  拦截器动态地作用于Action与Result之间,它可以动态地Action及Result进行增强(在Action与Result加入新功能)

1、浏览器(http请求)--->StrutsPrepareAndExecuteFilter

2、StrutsPrepareAndExecuteFilter(Create)---->ActionProxy

3、ActionProxy(调用)-------->Interceptor

4、Interceptor--->前处理

5、Interceptor--->execute()

6、Interceptor---->返回result

7、Interceptor---->后处理

8、Intercepto(返回result)---->ActionProxy

9、ActionProxy(返回页面)----->浏览器

 

(2)、拦截器API

在Struts2API中,存在一个名为“com.opensymphony.xwork2.interceptor”的包,此包的对象是Struts2内置的一些拦截器对象,它们都具有不同的功能,Interceptor接口是Struts2框架中定义的拦截器对象

public interface Interceptor extends Serializable{

  void destory();

  void init();

  String intercept(ActionInvocation invocation) throws Exception;

}

**destroy()方法指示拦截器生命周期结束,它在拦截器被销毁前被调用,用于释放拦截器在初始化进所占用的一些资源。

**init()方法用于对拦截器进行一引初始化操作,它在拦截器被实例化后,intercept()方法执行前被调用。

**intercept()方法是拦截器中的主要方法,用于执行Action对象中请求处理方法以及在Action的前前后后进行一些操作,动态增强Action功能。

只有调用intercept()方法中的invocation参数的invoke()方法,才可以执行Action对象中的请求处理方法

AbstractInterceptor对象是一个抽象类,它对Interceptory接口进行了实现,只用重写intercept()方法就行了

 

(3)、使用拦截器

1、搭建环境

2、创建TestAction

public class TestAction extends ActionSupport {

    @Override
    public String execute() throws Exception {
        // 线程睡眠1秒
        Thread.sleep(1000);
        return SUCCESS;
    }
   
}

(3)、配置struts.xml文件

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值