未知处理器

从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>

UnknownHandler的更多相关文章

  1. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

  2. Python3使用urllib访问网页

    介绍 改教程翻译自python官网的一篇文档. urllib.request是一个用于访问URL(统一资源定位符)的Python模块.它以urlopen函数的形式提供了一个非常简单的接口,可以访问使用 ...

  3. Struts2 源码分析——配置管理之ContainerProvider接口

    本章简言 上一章笔者讲到关于Dispatcher类的执行action功能,知道了关于执行action需要用到的信息.而本章将会讲到的内容也跟Dispatcher类有关系.那就是配置管理中的Contai ...

  4. python2 与 python3 urllib的互相对应关系

    urllib Python2 name Python3 nameurllib.urlopen() Deprecated. See urllib.request.urlopen() which mirr ...

  5. cookielib和urllib2模块相结合模拟网站登录

    1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...

  6. Urllib2 总结

    Urllib2 总结 介绍 Urllib2是用于获取URLs(统一资源定位符)的一个Python模块.它以urlopen函数的形式提供了非常简单的接口.能够使用各种不同的协议来获取网址.它还提供一个稍 ...

  7. struts2支持的结果类型

    在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...

  8. Python之urllib2

    urllib2 - extensible library for opening URLs Note The urllib2 module has been split across several ...

  9. python的urllib2库详细使用说明

    一直以来技术群里会有新入行的同学提问关于urllib和urllib2以及cookielib相关的问题.所以我打算在这里总结一下,避免大家反复回答同样的问题浪费资源. 这篇属于教程类的文字,如果你已经非 ...

随机推荐

  1. 廖雪峰python教程的第一个疑问

    函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...

  2. 2-3 Linux文件管理命令详解

    1. 复制文件 cp: copy 格式  SRCFILE         DEST 一个文件到一个文件 多个文件到一个目录 注,cd 后面什么都不加,是进入用户的家目录 如果目标文件不存在,则先创建文 ...

  3. WPF 自定义绕圈进度条

    在设计界面时,有时会遇到进度条,本次讲解如何设计自定义的绕圈进度条,直接上代码: 1.控件界面 <UserControl x:Class="ProgressBarControl&quo ...

  4. WPF 无边框透明按钮

    在实际开发过程中,有时候要设置一个无边框的按钮,或者无边框的透明按钮. 按钮效果如下: 1.当你应用telerik组件中的Button时,这个直接就可以设置 telerik:StyleManager. ...

  5. (转)CNBLOG离线Blog发布方法

    原文章路径:http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html (新添了插件路径) 去年就知道有这个功能,不过没去深究总结 ...

  6. Windows 10升级如何立即进行,不用等微软分批推送?

    如果你已经在 Windows 7/8.1 中预订,但现在还没收到 Windows 10 推送,可以试试下面的方法加速流程! 绝招:下载Windows 10 Media Creation Tool立即启 ...

  7. [转]ASP.NET Core 中间件详解及项目实战

    本文转自:http://www.cnblogs.com/savorboard/p/5586229.html 前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际 ...

  8. openstack学习(二)虚拟机XML文件

    1 , XML文件 <domain type='kvm'> //如果是Xen,则type=‘xen’ <name>ubuntu</name> //虚拟机名称,同一物 ...

  9. USACO2.4 The Tamworth Two[模拟]

    题目描述 两只牛逃跑到了森林里.农夫John开始用他的专家技术追捕这两头牛.你的任务是模拟他们的行为(牛和John). 追击在10x10的平面网格内进行.一个格子可以是: 一个障碍物, 两头牛(它们总 ...

  10. SQL-语句实现九九乘法表

    下面用while 和 if 条件写的SQL语句的四种九九乘法表  sql语句实现--x 左下角九九乘法表 DECLARE @I INT ,@J INT,@S VARCHAR(100) SET @I=1 ...