zoukankan      html  css  js  c++  java
  • UnknownHandler

    未知处理器

    从struts2.1 开始 ,struts2配置文件的DTD中增加了<unknown-handler-stack…/>和<unknown-handler-ref…/>,这个元素用于配置Struts2的未知处理器。

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

            未知处理器需要实现 UnknownHandler 接口,该接口里包含来了3个方法:

        HandleUnknownAction:用户请求未知Action时,该方法见会被回调。
        HandleUnknownActionMethod: 用户请求指定Action的未知方法时,该方法将会被回调。
        HandleUnKnownResult: action处理结束之后返回一个位置Result时,该方法将会被回调。
    

    代码如下:

    package com.struts2.action;
    
    import org.apache.struts2.dispatcher.ServletDispatcherResult;
    
    import com.opensymphony.xwork2.ActionContext;
    
    import com.opensymphony.xwork2.Result;
    
    import com.opensymphony.xwork2.UnknownHandler;
    
    import com.opensymphony.xwork2.XWorkException;
    
    import com.opensymphony.xwork2.config.entities.ActionConfig;
    
    public class MyUnKnownHandler implements UnknownHandler{
    
        /**
    
         * @param namespace 用户请求的action所在的命名空间
    
         * @param actionName 用户请求的Action的名字
    
         * @return 该Action最后生成的ActionConfig,可以返回null
    
         */
    
        @Override
    
        public ActionConfig handleUnknownAction(String namespace, String actionName)
    
               throws XWorkException {
    
           // TODO Auto-generated method stub
    
           return null;
    
        }
    
     
    
        /**
    
         * @param action 用户请求的Action对象
    
         * @param methodName 用户请求的Action 的方法名
    
         * @return 该Action 的该方法处理后返回的Result。
    
         */
    
      
    
    @Override
    
        public Object handleUnknownActionMethod(Object action, String methodName)
    
               throws NoSuchMethodException {
    
           // TODO Auto-generated method stub
    
           return null;
    
        }
    
     
    
        /**
    
         * @param  actionContext  该result所在ActionContext
    
         * @param  actionName     该result所在的Action名
    
         * @param  actionCofig    该result所在ActionContext
    
         * @param  resultCode     该result所对应的逻辑视图字符串
    
         * @return 将要被处理的结果,可以返回null
    
         */
    
        @Override
    
        public Result handleUnknownResult(ActionContext actionContext, String actionName,
    
               ActionConfig actionConfig, String resultCode) throws XWorkException {
    
           // TODO Auto-generated method stub
    
           actionContext.put("action", actionName);
    
           actionContext.put("result", resultCode);
    
           return new ServletDispatcherResult("/unknownResult.jsp");
    
        }
    
    }

     相关的配置:

    <!-- 使用bean 定义一个UnknownHandler -->
        <bean name="yeekuHandler" type="com.opensymphony.xwork2.UnknownHandler"
    
           class="com.struts2.action.MyUnKnownHandler"></bean>
    
     
    //定义未值处理栈
     <unknown-handler-stack>
            <unknown-handler-ref name="yeekuHandler"></unknown-handler-ref>
        </unknown-handler-stack>
  • 相关阅读:
    CLR via C#(04) 本是同根生
    CLR via C#(01).NET平台下代码是怎么跑起来的
    CLR via C#(02)基元类型、引用类型、值类型
    Mysql定期自动备份
    Extjs4 图片上传 预览
    inno setup打包应用程序
    bat批处理学习
    localhost/127.0.0.1/本机IP的区别以及端口号
    VirtualBox虚拟机上安装windows7系统
    Linux系统中Oracle11g数据库的安装与验证
  • 原文地址:https://www.cnblogs.com/langtianya/p/5372861.html
Copyright © 2011-2022 走看看