快速业务通道

Struts2教程9:实现自已的拦截器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
null,执行return null。

2.返回值为INVOKE,执行return invockation.invoke()。

3.其他情况,执行return result。result表示指定方法的返回值,如上面代码所示。

在实现完上面的拦截器父类后,任何继承于ActionInterceptor类的拦截器都可以自动根据action的参数值调用自身的相应方法。下面我们来实现一个拥有两个动作方法test和print的拦截器类。代码如下:

package interceptor;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
public class MultiMethodInterceptor extends ActionInterceptor
{
    public String test() throws Exception
    {
        HttpServletResponse response = ServletActionContext.getResponse();
        response.getWriter().println("invoke test");
        return this.INVOKE;
    }
    public String print() throws Exception
    {
        HttpServletResponse response = ServletActionContext.getResponse();
        response.getWriter().println("invoke print");
        return null;
    }
}

test方法返回了INVOKE,因此,在执行完这个方法后,Struts2会接着调用其他拦截器的intercept方法或Action类的execute方法。而print方法在执行完后,只是返回了null,而不再调用其他的方法了,也就是访问如下的url时,动作的execute方法将不会执行:

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

下面我们来实现一个Action类,代码如下:

package action;
import org.apache.struts2.*;
import com.opensymphony.xwork2.ActionSupport;
public class InterceptorAction extends ActionSupport
{
    public String abcd() throws Exception
    {
        ServletActionContext.getResponse().getWriter()
                .println("invoke abcd");
        return null;
    }
}

Struts2教程9:实现自已的拦截器(3)

时间:2011-07-03 BlogJava nokiaguy

在这个Action类中,只有一个abcd方法,实际上,这个方法相当于execute方法,在下面会设置动作的method属性为abcd。下面我们来在struts.xml中定义拦截器类和动作,代码如下:

<?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-stack name="methodStack">
                    <interceptor-ref name="method" />
                    <interceptor-ref name="defaultStack" />
                </interceptor-stack>
        </interceptors>
        <action name="interceptor" class="action.InterceptorAction" method="abcd">
            <interceptor-ref name="methodStack" />
        </action>
    </package>
</struts>

在配置上面的methodStack拦截器时要注意,最好在后面引用defaultStack,否则很多通过拦截器提供的功能将失去。

OK,现

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号