从struts2.1开始,struts2增加了未知处理器。
当用户请求未知Action,或指定Action里的未知方法,或Action处理结束后返回一个未知的result。struts2允许使用未知处理器来处理这些情况。
未知处理器需要实现UnknownHandler接口,该接口包含三个方法
-handleUnknownAction:用户请求未知Action时,该方法会被回调
-handleUnknownActionMethod:用户请求指定Action的未知方法时,该方法会被回调
-handleUnknownResult:Action处理结束后返回一个未知Result时,该方法会被回调
一旦实现了自定义的未知处理器,就可以在struts.xml中通过
例如
例子:
(1)我们实现我们简单的未知处理器
public class MyUnknownHandler implements UnknownHandler {
public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException {
System.out.println(actionName+"不存在");
return null;
}
public Result handleUnknownResult(ActionContext actionContext, String actionName, ActionConfig actionConfig,
String resultCode) throws XWorkException {
System.out.println(resultCode+"不存在");
return null;
}
public Object handleUnknownActionMethod(Object action, String methodName) throws NoSuchMethodException {
System.out.println(methodName+"不存在");
return null;
}
}
(2)在struts.xml中配置未知处理器
//定义我们的未知处理器
<package name="p3" extends="struts-default">
<action name="myAction"></action>
</package>
//定义未知处理器栈
<unknown-handler-stack>
<unknown-handler-ref name="myHandler"></unknown-handler-ref>
</unknown-handler-stack>
原理:
然后我们访问myAction,会输出success不存在。
是因为不指定action的class属性时,默认使用ActioSupport
一般未知处理器主要处理Action返回未知result时有用。
了解即可。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章