(十一)struts2的未知处理器
阅读原文时间:2023年07月09日阅读:2

从struts2.1开始,struts2增加了未知处理器。

当用户请求未知Action,或指定Action里的未知方法,或Action处理结束后返回一个未知的result。struts2允许使用未知处理器来处理这些情况。

未知处理器需要实现UnknownHandler接口,该接口包含三个方法

-handleUnknownAction:用户请求未知Action时,该方法会被回调
-handleUnknownActionMethod:用户请求指定Action的未知方法时,该方法会被回调
-handleUnknownResult:Action处理结束后返回一个未知Result时,该方法会被回调

一旦实现了自定义的未知处理器,就可以在struts.xml中通过元素来配置未知处理器
例如

例子:

(1)我们实现我们简单的未知处理器  

        public class MyUnknownHandler implements UnknownHandler {

            public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException {  
                System.out.println(actionName+"不存在");  
                return null;  
            }

            public Result handleUnknownResult(ActionContext actionContext, String actionName, ActionConfig actionConfig,  
                    String resultCode) throws XWorkException {  
                System.out.println(resultCode+"不存在");  
                return null;  
            }

            public Object handleUnknownActionMethod(Object action, String methodName) throws NoSuchMethodException {  
                System.out.println(methodName+"不存在");  
                return null;  
            }

        }

(2)在struts.xml中配置未知处理器

//定义我们的未知处理器

        <package name="p3" extends="struts-default">  
            <action name="myAction"></action>  
        </package>  
        //定义未知处理器栈  
        <unknown-handler-stack>  
            <unknown-handler-ref name="myHandler"></unknown-handler-ref>  
        </unknown-handler-stack>

原理:

然后我们访问myAction,会输出success不存在。
是因为不指定action的class属性时,默认使用ActioSupport
一般未知处理器主要处理Action返回未知result时有用。
了解即可。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器