Struts 2.2.3.1指南:插件开发指南(Codebehind插件)

3.3 Codebehind插件
已废弃的插件
从2.1开始,为了支持Convention插件,这个插件就被废弃了。关于如何把应用程序转向Convention插件,请查看这个页面:把基于Codebehind的应用程序转化为基于Convention的应用程序。

通过添加页面控制器约定,Codebehind插件减少了普通的配置。在两种常见的情况下,在配置上插件优先应用约定:
(1)默认的映射(或没有映射的页面):有些情况下,页面大多数是静态的,并不需要Action类来执行逻辑。常见的示例是索引页面,以及那些大量使用JSP标签或JSF组件的页面。
(2)默认的result:大多数Action的目的都是执行代码,为一个特定的页面准备数据。页面的名称通常与Action名称相同。

要改善第一种情况,插件将会检测一个没有相应Struts映射的页面的存在性,并自动替换一个使用包的默认Action类的映射,通常为ActionSupport,一个没有操作的Action。对于默认的result的问题,插件将会通过检测这个Action的页面的存在性并创建相应的实际配置,让它不需要定义这些result。通过这两种方式,插件支持基于页面的开发风格,以一种通用的方式来处理Struts的Action与页面,以及页面与Result的链接。

要查看插件的实际效果,请查看应用程序展示中的人员管理示例。
3.3.1 特性
(1)为没有Action的页面提供默认的映射;
(2)通过自动检测页面提供默认的result。
3.3.2 用法
要使用这个插件,只需要把它的jar文件简单地复制到应用程序中。这个插件可以用于查找默认的映射和result。

默认的映射
为了更好地促进code-behind的开发方式,插件将会检查没有为请求定义Struts action映射却存在相应页面的情况。然后它将会创建一个引用默认的Action类(通常是ActionSupport)的虚拟action映射,让页面可以正常显示。此外,还会应用包中配置的默认拦截器栈,把拦截器栈的工作流的优点带给简单的页面。在没有找到为请求明确配置的Action时,插件会在web应用程序中搜索一个可能的页面。特别地,会使用以下模式来定位页面:/NAMESPACE/ACTION.(jsp|vm|ftl)
例如,如果有一个请求:http://www.company.com/myapp/member/login.action,插件将会以以下顺序来查找以下页面:
(1)/member/login.jsp
(2)/member/login.vm
(3)/member/login.ftl
如果找到这些页面中的任意页面,插件将会创建一个实际的ActionConfig对象,然后使用ActionSupport类来作为Action,并使用一个指向查询到的页面的Result。ActionConfig将会被放入配置包,这意味着它将会继承包中的默认拦截器栈。默认的包为codebehind-default,但是,通过以下常量,可以在任意配置文件中配置默认包:struts.codebehind.defaultPackage。

默认的Result
在很多应用程序中,大多数Result可能与Action映射一样具有相同的根名称。为了减少这种不必要的配置,如果没有明确的配置Result,Struts插件将会试图推测适当的Result。这个技术队任何Result code都有用,包括success。在与零配置风格相结合时,应用程序中的配置数量将会减少到接近于零。
在没有找到明确的与Action的result code匹配的Result配置时,插件会再次搜索web应用程序中的一个匹配页面。特别地,会按照以下顺序,使用以下模式来定位页面:
(1)/NAMESPACE/ACTION-RESULT_CODE.(jsp|vm|ftl)
(2)/NAMESPACE/ACTION.(jsp|vm|ftl)
这两种模式用于查找这三种默认的页面扩展名中的每一种扩展名:jsp、vm和ftl。例如,如果有一个请求:http://www.company.com/myapp/member/login.action,那么action名为login,命名空间为member,并且Action类返回success,插件将会按照以下顺序查找以下页面:
(1)/member/login-success.jsp
(2)/member/login.jsp
(3)/member/login-success.vm
(4)/member/login.vm
(5)/member/login-success.ftl
(6)/member/login.ftl
如果找到这些页面中的任意页面,相应的Result就会被创建并处理。

设置
以下设置可以定制,请查看开发指南。


安装
这个插件可以通过把插件的jar文件复制到应用程序的/WEB-INF/lib目录中来安装,不需要复制或创建其它文件。

猜你喜欢

转载自hanyuan8407.iteye.com/blog/1765999