未知处理器

从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. OpenStack中Keystone的基本概念理解

    原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...

  2. mongoDB的安装(一)

    0.安装环境说明: linux系统:centos6.5 mongoDB版本:mongodb-linux-x86_64-rhel62-3.2.7.tgz 1.下载 mongoDB的下载:https:// ...

  3. EF继承关系映射

    继承映射策略的三种策略 There are following three different approaches to represent an inheritance hierarchy in ...

  4. BI报表系统在银行业的应用

    在当前大数据的背景下,银行业传统联机业务技术存在开发周期长.不够灵活.大量的业务数据难以充分利用.操作复杂.监控效率低等弊端,多数企业表示需要搭建一个符合银行特色的商业智能平台,把需要的数据和信息集中 ...

  5. ECharts 初体验

    缘起 ECharts,缩写来自Enterprise Charts,商业级数据图表,它最初是为了满足公司商业体系里各种业务系统(如凤巢.广告管家等等)的报表需求.以前这些系统的图表需求我们都是使用fla ...

  6. 如何用ZBrush快速绘制身体

    Fisker老师用了5节课详细讲解了僵尸的头部制作过程,用了大量时间完善细节部分,在ZBrush3D图形绘制软件中雕刻模型就是这样,需要反复调整与修改,每一个细节都做到极致才是最理想的状态.头部雕刻好 ...

  7. NOIP2010关押罪犯[并查集|二分答案+二分图染色 | 种类并查集]

    题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示 ...

  8. [No000054] Windows 下Python3.5, NoteBook增强版安装

    接着上周继续,没看的童鞋.请移步: http://www.cnblogs.com/Chary/p/No00004B.html 这里,假设你已经能够看到这个画面了: 接下来,我们继续 给药 : 安装no ...

  9. Nginx 日志中记录cookie

    在http节点下添加 log_format mai2 '$remote_addr - $remote_user [$time_local] "$request" ' '$statu ...

  10. k-develop 在ros上面的应用

    sudo apt-get install kdevelop 根据wiki上面的ros 章节中,关于kdevelop的介绍,配置好环境即可. 导入工程时,选中src/src下面的章节,不过,需要注意去掉 ...