J2EE中MVC的使用以及优化
2016-03-22 19:10
218 查看
MVC的使用在.net项目中已经熟悉,今天学习过程中学到了将MVC使用到JAVA应用程序中,感觉有意思做一下总结。
(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当中。
(1)视图中含有表示代码和导航代码
(2)每个视图必须重复系统服务
(3)导航的逻辑可能会变得非常复杂
(4)页面之间的联系过强(如图)
然而通过使用Front Controller模式,用一个单独的控制器:
这个样子就减少了重复代码的使用,同时集中请求了处理和应用导航,使得Controller和View之间更加解耦合。
在上面已经提到,使用Servlet充当Controller,也就是ServletFront,其实除了ServletFront还可以通过JSPFront的形式来进行Front Controller的设计,如图所示:
通过使用FrontController之后的优点如下:
(1)在多个请求间集中系统服务和业务逻辑的处理
(2)通过清晰的应用分解提供高度的可重用性
(3)为客户化的安全和应用访问提供单点控制
而我们所设想的,Controller应该仅仅是用于分配请求,其中的大量业务逻辑要从Dispatcher中提取出去,这时加上Action Handler模式就再好不过了。如图:
将业务逻辑、Case判断、处理请求的大量代码都放到Handler中,也就实现了Controller仅仅用于分配请求,真正的处理请求就放到了Handler当中,至此,J2EE中使用MVC框架就非常完美了。
总结:虽然没有将代码融入其中,但是对于在J2EE中使用MVC以及一步步的进行代码结构的优化,很有意思,也感叹前辈们这些脑洞大开的设计理念,站在巨人肩膀上,学习了。
一、映射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以及一步步的进行代码结构的优化,很有意思,也感叹前辈们这些脑洞大开的设计理念,站在巨人肩膀上,学习了。
相关文章推荐
- CentOS 7 安装 (U盘安装过程)
- J2EE --- Servlet 生命周期与工作原理
- JXL操作Excel
- 周总结三
- Java Generics and Collections-2.3
- ABP源码分析九:后台工作任务
- 【ssh简单版git-server 1】自建git-server
- openstack-ovs-新创建instance无法通信
- Nginx + https + 免费SSL证书配置指南
- Android官方开发文档Training系列课程中文版:添加ActionBar之添加Action按钮
- 【打杂】苹果市场的评论搜集
- Java用freemarker导出word
- (hdu step 6.3.1)Strategic Game(求用最少顶点数把全部边都覆盖,使用的是邻接表)
- POJ 2728 Desert King
- 第五回,谈中国式产品创新
- 【强联通分量】
- mac安装nginx
- Ubuntu配置Bind9
- Visual Studio 2010配置Opencv2.4.9
- 用C++实现在键盘上输入任意个数