Struts 2 拦截器教程2

来源:互联网 发布:电阻识别软件 安卓版 编辑:程序博客网 时间:2024/05/29 03:18

Struts 2 拦截器例题

在这个例子中我们将了解用不同的方法创建自定义拦截器(interceptor)并将它与动作(action)类相关联。

 

Struts 2带有预先定义好的一组拦截器(interceptor)和拦截器(interceptor)栈,你可以直接使用。struts-default.xml文件包含定义了所有拦截器(interceptor)和拦截器(interceptor)栈的struts-default包。

 

当用默认的defaultStack从struts-default包继承到你的包中,那么你可以在你的包中使用所有的动作(action)。在struts-default.xml文件中是这样设置的。

 

现在让我们来设定自己的拦截器(interceptor)栈。interceptor-stack是用来创建拦截器(interceptor)栈的元素。一个栈包含一组拦截器(interceptor)。在栈用interceptor-ref元素来定义拦截器(interceptor)。下面我们根据需要创建一个和defaultStack相似的栈并自定义一个校验(validation)拦截器(interceptor)。

 

在SampleAction类中包含populate(),execute()和validate(),三个方法。当我们继承ActionSupport类,就会捕获Validateable接口。动作(action)类中的validate()方法将会被工作流(workflow)拦截器(interceptor)调用。默认情况下,调用populate()和execute()方法时,都会调用一次validate()方法,但是我们只需要在调用execute()方法的时候调用。

 

我们可以为校验(validation)拦截器(interceptor)的excludeMethods参数指定方法。

 

struts.xml文件内容如下:

 

 

上面的代码和defaultStack相比仅仅是修改了校验(validation)拦截器(interceptor)的excludeMethods的参数值。这里只是向你展示如何自定义拦截器(interceptor)栈,你也可以用类似的方法来实现。

 

你也可以从defaultStack继承栈并重写校验(validation)拦截器(interceptor)的excludeMethods的参数值。方法如下:

 

SampleAction类的内容如下:

 

如果你用defaultStackf方式,没有做任何修改,那么输出的结果如下:

 

如果你用我们创建的exampleStack方式来运行,那么输出结果如下:

 

你可以看到,在执行populate()方法的时候,并没有调用validate()方法。你可以用这种方式根据需要自定义栈。

 

源代码:下载

源代码 + lib:下载