一.Mode I
Mode I 就是指在开发之中将显示层、控制层、数据层的操作统一交给JSP或JavaBean来进行处理。
Mode I 的处理情况分为两种:一种是完全使用JSP进行开发;另外一种是JSP+JavaBean
的模式进行开发。下面分别对这两种情况进行说明:
纯JSP:
用户发出的请求(request)交给JSP页面进行处理。如果是开发小型的Web程序,为了开发快
速和便利,通常会把显示层和逻辑运算层都写在JSP页面中:
优点:
1.开发速度加快,程序设计人员不需要额外编写JavaBean或Servlet,只需要专注开发
JSP页面即可。
2.小幅度修改程序代码较为方便。因为没有用到JavaBean或Servlet,所以在修改程序
时,直接修改JSP后,再交给Web容器重新编译即可。而不用像写JavaBean或Servlet
要先将Java源文件(*.java)编译成类文件(*.class),再放在Web容器上才能够执行。
缺点:
1.程序可读性很低。因为程序代码和网页标记都混在一起了,这会增加维护的困难度和复杂度。
2.程序可重复利用性低。由于将所有程序代码都直接下在JSP页面上,并没用把常用的程序写成
组件的形式加以重复利用,因为造成程序代码过于繁杂、难以维护。
JSP+JavaBean:
若将显示操作都写如JSP页面中,而业务层都写成JavaBean的形式,将程序代码封装成组件。这
样,JavaBean将负责大部分的数据处理,如执行数据库操作等(类似于DAO),再将数据处理的结果
返回到JSP页面上进行显示。
优点:
1.程序可读性较高。因为大部分程序代码都写在JavaBean形式,不会和网页显示标记混在
一起。这样,后期的维护中,能够较为轻松。
2.可重复性很高。由于核心业务代码使用JavaBean开发,因此可重复使用此组件,可以大大
减少编写重复性程序代码的开发工作。
缺点:
没有流程控制。程序的每一个HSO页面都需要检查请求参数是否正确、条件判断、异常发生时需要
处理,而所有的显示操作都与具体的业务代码紧密耦合在一起,日后维护也是很困难。
总的来说:
Mode I 的结构最适合小型的程序开发,或是复杂度较低的程序,因为 Mode I 最大的优点
就是开发速度较快,但是在进行维护的时候需要付出更大的代价。如果程序复杂度太大,纵使可以
快速地开发程序,但是后续的维护才是最重要的问题,考虑到代码的维护在开发中的地位,所以很
多使用的还是 Mode II。
二. Mode II (Model-View-Controller)
在Mode II 中所有的开发都是以Servlet为主体展开的,由Servlet接受所用的客户端
请求,然后根据请求调用相应的JavaBean,并将所用的显示结果交给JSP完成,也就是俗称
的:MVC设计模式。
MVC是一种设计模式,它强制地使应用程序的输入、处理和输出分开。MVC设计模式被分为三个核
心层:模型层、显示层和控制层。它们各自处理自己的任务,各层的任务如下:
显示层:主要负责接受Servlet传递的内容,并且调用JavaBean,将内容显示给用户。
控制层:主要负责所有的用户请求参数,判断请求参数是否合法。
模型层:完成一个独立的业务操作组件,一般都是以JavaBean或者EJB的形式进行定义的。
在MVC模式中,最关键的部分是使用RequestDispatcher接口,因为内容都是通过此接口
保存到JSP页面上进行显示的。
当用户有请求提交时,所有的请求都会交给Servlet进行处理,然后由Servlet调用JavaBean,
并将JavaBean的操作结果交给RequestDispatcher接口传递到JSP页面上,由于这些要显示的
内容只是在一次请求-回应中有效,所以在MVC设计模式中,所有的属性传递都将使用request属性
的形式进行传递,这样可以提升代码的操作性能。
为什么要用request属性进行传递?
page : 只能在本页面中保存,跳转后无效,这个属性是第一个被排除的。
request、session、application属性而言。保存范围越大的占用内存就越多。reqeust
范围所保存的事件是最少的,内存占用量也就比session和application少,所以性能是最高的。
但是,如果某些属性需要在一次会话中保存,那么肯定就要使用session进行保存了,一般都是在
用户登录验证操作中使用session的。