学习过了Servlet之后,我们紧接着学习Web开发模式。
WEB开发模式
在实际的Web开发中,有两种主要的开发结构,成为模式一(Mode I)和模式二(ModeII)
两种开发模式为整个WEB的核心操作,其中以模式二最为重要,可以这么说,如果可以将模式二彻底掌握了,那么我们之前所学习的java 和 数据库等等的内容就全部通晓了。
现在有好多的学生在之后学习了框架开发之后就会把所有的精力都放在了框架的研究中,而忽略了基本的原理,导致了一些学生除了框架之外,其他的一些都不会。
其中Mode 11绝对是我们学习的核心基础,不会有任何人去反对它的价值,只要是反对的,可以说这个人等于完全不懂技术了。
Mode I
如上图所示 Mode I 就是指在开发中将显示层、控制层、数据层的操作统一交给JSP或者javaBean进行处理。
Mode I 的处理情况分为两种:
1. 完全使用JSP进行开发
2. 使用JSP+javaBean的模式进行开发。
之前在讲解javaBean的时候讲解过DAO设计模式(javaBean迈向DAO开发),实际上在这道程序中可以发现,DAO负责完成数据层的操作,而JSP负责显示,一个典型的JSP+javaBean的开发模式。
客户端现在通过访问的JSP,调用里面的javaBean,而通过javaBean调用数据库
在javaBean中就包含了专门负责处理数据的操作,数据层主要是以DAO为主,除了数据之外还包含了业务的处理。
在整个的开发中本身就存在了一个问题,现在的程序肯定是需要JSP+javaBean一起开发完成后才可以使用,此时就可能出现推诿的问题,例如:美工同志说 必须要先写程序,然后再做美工,但是程序说了,要写作美工再做程序,所以,这种开发分工不是很明确,JSP页面中嵌入了较多的java代码。
这种开发本身只适合于比较快速的开发,适合小型的开发,但是后期维护困难。
Mode II :ModeI-View-Controller(MVC)
Mode II这个名字如果有些同学不熟悉的话,我相信它的另一个名字大家应该都听说过,就是我们的MVC设计模式。Mode II就是MVC了。在ModeII中所有的开发都是以Servlet为主体的。
为什么以Servlet为主体?因为Servlet的特点:可以接受用户的请求参数,还可以调用java程序,而且由于其本身就是以java程序运行的,所以肯定要比JSP性能高很多的,而且安全性也很高
客户通过请求发送到Servlet处理,Servlet让javaBean去调用数据库,然后返回到JSP页面进行输出等。
最终Servlet所有操作的内容都要交给JSP进行显示,这样一来,Servlet不方便输出的缺点(System.out.println("<html>"),输出不方便)就避免了。
这样一来就实现了明确的分工了: javaBean完成具体的单个的功能,JSP完成显示的功能,而Servlet负责连接JSP和javaBean。 JSP—>Servelt->javaBean 。
这种设计非常适合于大型项目的开发,而且维护方便。
这套设计将形成固定的思路,如果真正的掌握了,你就是无敌的了。基本上你就打通了WEB开发的血脉。
MVC处理流程
MVC有自己的处理流程,实际上最重要的就是输出和跳转的问题了。
所有的操作都会调用service这个接口,然后调用javaBean调用数据库。
要想实现MVC,最重要的是RequestDispatcher,它将javaBean的处理结果交个JSP(java Server Page)去做。JSp将根据javaBean的指示将内容输出。
而且,一定要再次强调,由于所有的内容都是要交给JSP进行显示,那么这个时候最方便的属性范围就是request属性范围,例如: 以一个雇员列表为例,可以发现,JSP中只是负责显示数据而已,但是这些数据如果要是通过了MVC设计模式完成的话,肯定这些数据只是在一个JSP中显示一次即可,而且Servlet应该负责将所有的一次显示的内容交给JSP完成,那么最合适的属性范围就是request范围了,因为之前强调过:能使用page(pageContext)就不要使用request,能使用request就不要使用session,能使用session就不要使用application。
从实际的开发来讲,session属性范围用于登录验证上使用较多,而request范围主要的功能就是在MVC设计模式上,将Servlet的内容交给JSP显示,而且这种显示在另外一次提交之后属性就消失了。
在下一篇文章我们会讲解一个MVC的实例
转载于:https://blog.51cto.com/zhaoyuqiang/1153438