JSP的两种设计模式(MVC模型和非MVC模型)

上个星期刚学到JavaBean,学的不是很懂,在这里做下梳理

JavaBean是一种可重用组件技术,可以将内部动作封装起来,用户不需要了解其如何运行,只需要知道如何设计调用及处理结果就可以来。在开发动态网站的时候,我们使用JavaBean可以简化JSP页面的设计和开发,提高代码的可读性,从而提高网站应用的可靠性和可维护性。

一、非MVC模式

在基于JSP的B/S模式的程序开发中,非MVC模式是一种以JSP文件为中心,JSP页面不仅负责表现逻辑,也负责控制逻辑,主要有只有JSP页面的web应用程序和JSP+javabean技术的web应用程序,这种模式只适合一些简单项目

单纯JSP页面模式逻辑简单,可以快速搭建原型,但缺点也是非常多的:
HTML和Java强行耦合在一起,JSP页面中HTML与大量的Java代码在一起,给页面设计和可读带来很大的困难
极难维护和扩展,在JSP页面中直接嵌入访问数据的代码及sql语句,如果想要改动就要打开所有的页面,这是非常吓人的
不方便调试,很难定位错误

JSP+JavaBean组成的应用程序页面中,JSP页面负责表示逻辑和控制逻辑,JavaBean负责业务逻辑
,这种JSP页面纯净,可以使用少量的Java代码甚至不使用Java代码;JavaBean页面可以重用,扩展和维护都比较容易
JSP的两种设计模式(MVC模型和非MVC模型)
二、MVC编程模式

MVC三层模型,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间
最典型的MVC就是jsp+servlet+javabean模式
JSP的两种设计模式(MVC模型和非MVC模型)
客户端的请求不直接发送给JSP,而是发给控制器,一般是Servlet,再由控制器根据具体的请求调用不同的的事物逻辑,再返回结果,提供了一个进行前后端处理的中枢,也为输入数据的验证,身份验证,日志和实现国际化编程提供了合适的切入点
耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则
重用性高
随着技术的不断进步,需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器
生命周期成本低
MVC使开发和维护用户接口的技术含量降低。
部署快
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改

当然,缺点也是有的
不适合小型,中等规模的应用程序
花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率

MVC模型是一种非常理想化的设计模式,应用MVC模式完成两个以上项目的人都有同样的体会,它们已经对以前的工作模式进行来彻底的改造,开源Apache Struts framework提供了实现MVC模式最好的工具