组织Struts2项目(哪些包)

时间:2012-06-12 09:45:59

标签: java struts2

目前,使用简单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实现同一个项目,你能不能告诉我应该介绍哪些软件包。我知道服务和业务包将保持完整的控制器包呢?我应该将所有操作都放在控制器包中吗?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

不要根据他们的类型组织所有课程,他们应该与他们的直接合作者一起组织或组合在一起。如果您可以提供帮助,请将XAction和XController放在同一个包中。将XAction放在一个单独的包中,其中49个其他操作与其控制器位于其他地方时没有任何关系,这很愚蠢。

如果您将协作者组合在同一个包中,则很容易了解工作组,并且相当有信心更改工作组可能会影响另一个工作组。根据您的原始建议,谁真正知道哪些Action与Controller等有关。

答案 1 :(得分:0)

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

enter image description here

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

当您创建一个新的包内部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”中的“ /”将放入默认的命名空间。