有的时候,由于我们的粗心大意,将用户请求发送到了一个不存在的Action,这个时候系统就会出现异常,这并不是我们希望看到的。即使用户的请求找不到对应的Action时,存在一个默认的Action可以来接管用户的请求,这是我们希望看到的。
在Struts2中,可以通过配置<default-action-ref ... />
设置默认的Action。下面通过一个最简单的例子来说明:
<struts>
<package name="lee" extends="struts-default">
<default-action-ref name="default" />
<action name="default" class="com.jellythink.practise.LoginAction">
<result name="default">/default.jsp</result>
</action>
</package>
</struts>
配置<default-action-ref ... />
时,需要指定一个name属性,该name属性指定容器中另一个有效的Action;这样的话,这个Action将成为该容器中默认的Action。
将默认Action配置在默认命名空间里就可以让该Action处理所有用户请求,因为默认命名空间的Action可以处理任何命名空间的请求
在这篇《Struts2学习之Action的基本配置》文章中,说到Action的配置时,属性class是一个可选属性,如果没有指定class属性,则系统默认使用ActionSupport
作为Action处理类。
有的时候,使用默认的ActionSupport
作为Action处理类,也是很不错的。如果想要“标新立异”,Struts2允许我们自己配置Action的默认处理类,配置Action的默认处理类使用<default-class-ref ... />
元素,配置该元素时只需指定一个class属性,该class属性指定的类就是Action的默认处理类。
我们可以打开struts2-core-2.3.24.1.jar
中的struts-default.xml文件,会看到以下代码:
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
由于我们在struts.xml中定义的package都继承了struts-default
包,这也就继承了默认的处理类。我们可以按照我们的需要,自定义默认处理类。具体的用法和<default-action-ref ... />
类似,可以参见<default-action-ref ... />
的配置。
这篇文章总结的知识点非常的简单,了解了这篇文章中的知识点,对后续阅读别人的代码都会有很大的帮助。
果冻想-一个原创技术文章分享网站。
2016年01月26日 于呼和浩特。
未经允许不得转载:果冻想 » Struts2学习之配置默认Action和处理类