快速业务通道

Struts2教程9:实现自已的****** - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
在访问如下的URL:

http://localhost:8080/struts2/test/ddd.action?action=test

在浏览器中将会出现如下的字符串:

invoke test

invoke abcd

而如果访问http://localhost:8080/struts2/test/ddd.action?action=print,将会只出现如下的字符串:

invoke print

大家可以看出,访问这个url时并没有调用abcd方法。如果随便指定的action值的话,则只调用abcd方法,如访问http://localhost:8080/struts2/test/ddd.action?action=aaa,就只会输出invoke abcd。

Struts2教程9:实现自已的******(4)

时间:2011-07-03 BlogJava nokiaguy

二、******的参数

我们在使用很多Struts2内置的******时会发现有很多******都带参数,当然。我们自己做的******也可以加上同样的参数。有两个参数比较常用,这两个参数是includeMethods和excludeMethods,其中includeMethods指定了******要调用的Action类的执行方法(默认是execute),也就是说,只有在includeMethods中指定的方法才会被Struts2调用,而excludeMethods恰恰相反,在这个参数中指定的执行方法不会被Struts2调用。如果有多个方法,中间用逗号(,)分隔。在Struts2中提供了一个抽象类来处理这两个参数。这个类如下:

com.opensymphony.xwork2.interceptor.MethodFilterInterceptor

如有继承于这个类的******类都会自动处理includeMethods和excludeMethods参数,如下面的拦截器类所示:

package interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.*;
public class MyFilterInterceptor extends MethodFilterInterceptor
{
    private String name;
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception
    {
        System.out.println("doIntercept");
        System.out.println(name);
        return invocation.invoke();
    }
}

MethodFilterInterceptor的子类需要实现doIntercept方法(相当于Interceptor的intercept方法),如上面代码所示。在上面的代码中还有一个name属性,是为了读取拦截器的name属性而设置的,如下面的配置代码所示:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="demo" extends="struts-default" namespace="/test">
        <interceptors>
            <interceptor name="method" class="interceptor.MultiMethodInterceptor" />
                <interceptor name="filter"
                    class="interceptor.MyFilterInterceptor">
                    <param name="includeMethods">abcd</param>
                    <param name="name">中国</param>
                </interceptor>
                <interceptor-stack name="methodStack">
                    <interceptor-ref name="method" />
                    <interceptor-ref name="filter" />
                    <interceptor-ref na

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号