Struts2的零配置插件convention的简单总结

      在使用Struts2开发过程中为了避免多人同时更改配置文件带来的各种冲突,可以使用约定大于配置的插件。导 struts-Convention-plugin-x.x.x.jar然后在Struts.xml进行相应的约定配置即可。
      下面简单是我在工作过程中接触到的使用该插件常用的几个约定。
(1) 配置扫描哪些包下的Action
           <constant name="struts.convention.package.locators.basePackage" value="com.jimbo.archive.web"/>
 
(2)配置Convention插件搜索的根包, Convention插件默认的搜索包action、actions、struts、struts2,可以使用下面的配置对其进行修改:
          < constant  name ="struts.convention.package.locators"  value ="web" />
        如不做修改的话,插件会自动搜索包名以action、actions、struts、struts2结尾的包,通过以上修改则插件会默认搜索以web结尾的包。
如在com.jimbo.archive.web包下有ArchiveAction类,如果将上述配置中的value设为“archive”则按约定映射到/web/archive,如果设为web则映射为/archive

(3) 视图转发路径
            < constant  name ="struts.convention.result.path"  value ="/WEB-INF/views" />
    类似于配置SpringMVC的视图解析器,配置每次Action转发视图位置。上面的配置约定每次Action转发的视图在/WEB-INF/views下。

通过上面配置就可以实现基本的零配置使用,注意,使用零配置的Action类必须要继承ActionSupport类或实现Action接口。
使用零配置插件后请求与转发规则如下:
                    /archive.action 请求的是ArchiveAction的excute方法
        excute返回的是“success”字符串,则转发到/WEB-INF/views/archive.jsp
                    /archive!save.action 请求的是ArchiveAction的save方法
        如果save方法返回的是"save",则请求转发到/WEB-INF/views/archive-save.jsp,如果返回的是“success”则仍旧转发到/WEB-INF/views/archive.jsp
                    /archive-entity.action 请求的是ArchiveEntityAction的excute方法

                    /archive-entity!save 请求的是ArchiveEntityAction的save方法
如果save方法返回的是“save”字符串,则转发到/WEB-INF/views/archiveentity-save.jsp
通过观察可以做出如下总结:
                    Action类名包含Action后缀,将该Action类名的Action后缀去掉。否则不做任何处理。
                 Action类名的驼峰写法(每个单词首字母大写、其他字母小写的写法)转成中画线写法(所有字母小写,单词与单词之间以中画线隔开)。
                  方法与类名之间用!隔开
                  Convention插件总会到/WEB-INF/views/(通过配置设置)路径下定位物理资源,定位资源的约定是:actionName+result+suffix.当某个逻辑后视图找不到对应的物理视图时,Convention插件会自动试图使用actionName+suffix作为物理资源。

        

你可能感兴趣的:(工作笔记)