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>
  • 相关阅读:
    App分享微信小程序
    PHP-FFMpeg 操作视频/音频文件 (转)
    用户画像
    phpcms中的RBAC权限系统
    PHPExcel生成excel
    OPNET中节点模型中包流的索引号的含义
    删除opnet之前保存或打开的目录后每次打开总会提示warning
    opnet 的学习方法有感
    win10:两款轻量级美化软件使用技巧(StartlsBack++与RocketDock)
    任务栏透明
  • 原文地址:https://www.cnblogs.com/langtianya/p/5372861.html
Copyright © 2011-2022 走看看