一、 直接基于JSP的开发结构
JSP是J2EE中很重要的一部分,JSP功能强大,既可以作为页面来浏览,也可以处理业务;基于传统的网页HTML文件,却又兼容java代码;既可以用于开发小型的Web站点、也可以用于开发大型的、企业级的应用程序;Web项目一般少不了它。
对于小型的不易变动的WEB项目,可以只使用JSP来构建,这样的项目,一般功能比较单一、简单,且需求不常变动。就可以把所有动态和静态显示部分和业务处理(嵌入java代码或JavaScript控制)都放到JSP中。
简易结构图:
优缺点:
这种方案的好处就是编程简单,成本低,容易个人控制,但是当项目需求有变,或者项目扩大后,就需要整体性变动,而且界面大量的Java代码使美工不容易维护,其次,在JSP的业务逻辑也不适合多个客户同时访问,尤其是连接数据库的行为。
所以这种方案只能应用在小型网站,且开发人员较少的时候。
二、 JSP+JavaBeans 或者JSP+Servlet ,也就是常说的Model1两层开发结构
因为第一种JSP的结构只能满足较小网站,范围面较小,所以在JSP结构上进行发展,对JSP中的显示和业务做了分离。
结构图:
(1)JSP+JavaBean形式:在设计时JSP只负责显示页面,即JSP调用JavaBean传过来的数据然后显示,而JavaBean负责收集JSP需要的数据。
(2)JSP+Servlet形式:在设计时JSP只负责显示页面,即JSP调用Servlet传过来的数据然后显示,而Servlet负责收集JSP需要的数据并将处理后的结果返回给某一个JSP页面。
调用流程:
这种结构,没有将所有的东西全部交给JSP页面来处理。而是利用了JavaBeans和Servlet来处理一些常用的功能,例如可以将连接数据库写成一个Java Bean,它可以被多个JSP多次调用,将很容易完成一些完整的业务逻辑。
在这种开发方式中,一个网站可以有一个或几个核心的Servlet来处理网站的逻辑,通过调用JSP页面来完成客户端(通常是Web浏览器)的请求。
此处的JavaBeans和Servlet的主要目的是帮助JSP跟后台数据库打交道。起到的是中间层的作用,它使得前台JSP不涉及数据库具体处理问题。达到解耦的目的。
优缺点:
架构比较简单,适合中小型项目开发。但是,Model1虽然将数据库持久层部分分了出去,但是界面和业务逻辑仍然都在Jsp里,这样使得Jsp的职责过重,不单一。不利于业务修改,不便维护。
三、 JSP + JavaBeans + Servlet的MVC的三层开发结构( Model 2)
网站的逻辑关系和网站的显示页面互相混杂,是网站发展中非常棘手的问题,并长期存在,常常可以看见一些Java的逻辑代码和HTML代码掺差交错,尤其动静态页面并存的时候,这样的代码很难阅读,且不容易维护,所以Model2应运而生了。
Model2其实就是MVC的应用。
MVC(模型-视图-控制器)的三层开发结构能有效地分离逻辑开发,使开发人员能专注于各自的开发中。同时也能使整个开发结构流程更清晰,但是需要比较高的开发配合度。
视图(View):视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
控制器(controller):控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态
模型(Model):模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑。
结构图:
在Model2结构中,Servlet担负起决定整个网站逻辑流程的任务。在逻辑关系比较复杂的网站中,借助Servlet(Control 控制层,完成业务逻辑)和JSP(View 显示层,即前台界面)良好的交互关系和JavaBeans(Model ,实现操作和处理数据)的协助,完全可以将网站的整个逻辑结构放在Servlet中,而将动态页面的输出放在JSP页面中来完成。
调用流程:
优缺点:
Model2在Model1的基础上对混合在一起的界面和业务逻辑进行了分离。三个部分分工明确,Jsp只是显示数据,Servlet处理业务逻辑,JavaBeans完成具体数据库操作。职责清楚,比较适合大型项目架构。
这样的分层使项目更容易管理,能更好的适应需求的变化,需求的改变对系统的影响较小,且可以根据任务进行更好的人员分工。
当然,这样的架构相对前两个来说就比较复杂,不适合小型项目的开发(因为简单,所以没有必要)。
可能有人觉得Model2仍不够好用,于是 Struts又应运而生了,这个Struts下次再介绍。。。
从上面的三个架构模式可以看出,架构的设计没有绝对的好与坏,只有合适不合适。根据需求,项目大小,人员多少等确定一个合适的架构模式才是最好。