您的位置:首页 > 其它

J2EE中MVC的使用以及优化

2016-03-22 19:10 218 查看
    MVC的使用在.net项目中已经熟悉,今天学习过程中学到了将MVC使用到JAVA应用程序中,感觉有意思做一下总结。

 

    一、映射J2EE到MVC中

    如图是MVC的体系结构:

                                   


    (1) 数据的一个或者多个视图,

    (2)提供数据和行为的模型,

    (3)在视图中进行选择显示的控制器

    同样在java程序中使用MVC,如图所示:
                                        


   (1)JSP用作视图(View),由于JSP是HTML模板文件,为添加动态内容提供了多种机制,便于将其用作MVC体系当中的视图。

   (2)Servlet(s)用作控制器(Controller),通过Servlet来响应用户请求,控制视图的使用选择。

   (3)EJB用作模型(Model),在EJB当中可以用作添加业务逻辑,也可以提供对于数据的访问,类似于JDBC。

   由此,简单的了解之后,要将J2EE映射到MVC当中,JSP、Servlet、EJB分别充当V、C、M,就实现将MVC运用到JAVA当中。

  二、使用FrontController进行优化

    上述在JAVA应用程序中使用MVC一定程度上减少了代码复用和实现了分工开发,但是仍然有需要完善的地方,典型问题如下:

   (1)视图中含有表示代码和导航代码

   (2)每个视图必须重复系统服务

   (3)导航的逻辑可能会变得非常复杂

   (4)页面之间的联系过强(如图)

                          


     然而通过使用Front Controller模式,用一个单独的控制器:

                                          


    这个样子就减少了重复代码的使用,同时集中请求了处理和应用导航,使得Controller和View之间更加解耦合。

    在上面已经提到,使用Servlet充当Controller,也就是ServletFront,其实除了ServletFront还可以通过JSPFront的形式来进行Front Controller的设计,如图所示:
                                   


    通过使用FrontController之后的优点如下:

   (1)在多个请求间集中系统服务和业务逻辑的处理

   (2)通过清晰的应用分解提供高度的可重用性

   (3)为客户化的安全和应用访问提供单点控制

 

  三、使用Action Handler模式进行逻辑优化

    在java中经历了MVC、Front Controller的优化之后,就像上图,很大程度上已经解耦合了,可是有一点,在Dispatcher中会有大量的业务逻辑,比如用于处理请求的大量代码,比如有一个大型的条件选择语句等(如图):
                              


    而我们所设想的,Controller应该仅仅是用于分配请求,其中的大量业务逻辑要从Dispatcher中提取出去,这时加上Action Handler模式就再好不过了。如图:

                                  


    将业务逻辑、Case判断、处理请求的大量代码都放到Handler中,也就实现了Controller仅仅用于分配请求,真正的处理请求就放到了Handler当中,至此,J2EE中使用MVC框架就非常完美了。

 

    总结:虽然没有将代码融入其中,但是对于在J2EE中使用MVC以及一步步的进行代码结构的优化,很有意思,也感叹前辈们这些脑洞大开的设计理念,站在巨人肩膀上,学习了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: