将业务逻辑放在Java Bean中?

时间:2010-03-22 02:07:59

标签: java model-view-controller jsp servlets

我是reading this page,我发现了以下声明:

  

Java Server Pages中的MVC

     

现在我们有了方便   结构分开视图,如何   我们可以利用它吗? Java服务器   Pages(JSP)变得更有趣   因为HTML内容可以   与Java业务分离   对象。 JSP也可以使用Java   豆子。 业务逻辑可以放在Java Bean中。如果是   设计是正确的架构,一个Web   设计师可以使用HTML   JSP站点没有干扰   Java开发人员。

有趣的是,在我的教科书中,我引用了以下引用:

  

在MVC架构中......   始终处理原始请求   一个servlet。 servlet调用业务逻辑和数据访问代码并创建bean来表示结果(即模型)。然后,   servlet决定哪个Java Server Page   适合出示那些   特定的结果并转发   请求那里(JSP是视图)。   servlet决定什么业务   逻辑代码适用于哪个JSP   应该呈现结果(   servlet是控制器)。

这两个陈述似乎有点矛盾。使用bean的最佳方法是什么:我们应该在其中放置业务逻辑还是仅将结果放入其中?有没有豆类不足以代表模型的方法?

2 个答案:

答案 0 :(得分:6)

将业务逻辑放在具有后缀Manager的类中也很常见。虽然有些人把业务逻辑放在数据对象bean本身上,但是当数据对象上的方法只执行不依赖于任何外部依赖的简单函数时,我发现它是最好的。我将所有其余的业务逻辑放在一个Manager bean中,该bean能够使用多个数据对象javabeans和其他外部依赖关系来遵循业务逻辑。因此,例如,AccountBean将包含帐户字段,并且可能包含一些使用这些字段计算和返回值的简单方法,或格式化字段。所有业务逻辑都在Manager中,可能是AccountManagerBean。

答案 1 :(得分:3)

第二个语句基本上讲述了两个javabeans:一个用于业务逻辑,另一个用于模型。所以,是的,业务逻辑仍然可以放在javabeans中。业务逻辑的javabean可以将模型的javabean封装为其属性。

public class User {
    private Long id;
    private String name;
    // ...
}

public class UserManager {
    private User user;
    // ...

    public void login() {
        // ...
    }

    public void logout() {
        // ...
    }
}