组织一个Struts2项目(哪个软件包)

问题描述 投票:0回答:2

当前,我的使用简单JSP和servlet开发的项目具有以下程序包

1-Business package (Contains summed up methods from service package under a business rule)
2-Service package  (Contains different services and their implementation - along with factory
                     method to call a specific implementation of each service)
3-Controller package (All the servlet controls ..)
3-Views              (All the jsps)
4-CustomTags         (Contain the Custom Tags)
5-Domain             (Contains Domain objects)

现在,我计划使用struts2实施同一项目,您能告诉我应该介绍哪些软件包。我知道服务和业务包将保持不变,控制器包又如何呢?我应该将所有动作放在控制器包装中吗?任何建议将不胜感激。

java struts2
2个回答
2
投票

请勿根据您的班级类型来组织所有班级,应该将其与直接合作者一起组织或分组。如果可以帮助,请将XAction和XController放在同一包中。愚蠢的将XAction与其他49个与控制器无关的其他动作放在一个单独的程序包中。

如果将协作者分组在同一个程序包中,则很容易了解工作组,并且一定会更有信心地认为,更改一个工作组可能会影响另一个工作组。根据您最初的建议,谁真正知道什么Action可以与哪个Controller一起工作,等等。


0
投票

有可能!从2.0到2.3.x的Struts(我使用过这些版本),如果您使用注释struts2-convention-plugin.jar依赖项,则可以执行以下操作:

enter image description here

程序包的默认值(通常是zx.yz.actions)映射了项目上的所有Actions,它是上图中的程序包名称空间。

例如,当创建一个新的包内部Actions包zx.yz.actions.example时,您正在应用程序中创建一个新的名称空间/ servletContext / example。

要禁用它,只需要在“ Action()”注释方法前放置一个“ /”即可。例如:

    public class ExampleAction {

      @Action(value="/example", 
        @Result(name="ok", type="httpheader", params={"status", "200"})
      public String execute() {
      }
    }

'/ example'中的'/',将放在默认的命名空间中。

© www.soinside.com 2019 - 2024. All rights reserved.