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>
  • 相关阅读:
    理解构造器
    if与switch的性能比较
    Java对象的内存(一)
    shell编程_条件判断if
    shell编程_基础&变量
    集群架构篇:Nginx架构演进<拆分数据库 多台web节点共享静态资源>
    集群架构篇:Nginx流行架构LNMP
    集群架构篇:Nginx常用模块
    LInux系统@安装CentOS7虚拟机
    docker pull越来越慢的解决方法
  • 原文地址:https://www.cnblogs.com/langtianya/p/5372861.html
Copyright © 2011-2022 走看看