本日终于认识到自己的微小,想起了一句话,不努力机会来了你也抓不住,不要一贯想一步登天,一贯沉浸在白日梦的美好之中,一步一个脚印,有多大能力做多大的事情,走程序员的这条路,那么我就想去好公司,统统都以进阿里为目标,加油把。
一、设计模式 Model 1 和Model 2
Model 1
前面学习了Servlet和Jsp,对这两个有个大概的认识,Servlet便是为理解决静态页面的问题,能够实现动态的页面,使掩护,开拓更加的方便,但是也有缺点,在Servlet嵌入HTML代码实在是太麻烦了,每次都要out.println();输出。以是就有了Jsp,JSP中的内容便是html,为的便是方便写html,写页面,实质上JSP也是一个servlet,以是在它中也会不可避免的要写一些java代码,也便是脚本,为了不让其那么混乱,就增加了标签,EL表达式来只管即便代替脚本。但是在写一些项目时,还是会很麻烦,缘故原由是业务逻辑代码,与数据库交互的代码,HTML代码这些种别,风格,浸染完备不同的都殽杂在了一起,造成的结果是代码的掩护性,可读性以及扩展性都非常差,比如要改一个需求,那么必须要把全部代码都看完,理解到,不然你可能会由于修正了一处代码,导致别的地方多处缺点,这种设计模式也叫做 模式一(Model 1),该当因此前技能还没那么好时才这样写的。
Model 2(MVC)
为了改进上面所说的缺陷,也便是将业务逻辑代码放一起,显示页面的HTML代码放一起,与数据库交互的代码放一起,这样开拓思路更加清晰,掩护起来也更加方便,这种就叫做MVC模式,M:Model 模型,代表着业务逻辑代码与数据库代码,V:View 对数据的展示代码,比如JSP页面,便是专门用来展示数据,美化页面的 C:Controller 掌握,Servlet来充当这一角色,连接着View和Model,从View中得到指令,在从model中通过业务逻辑代码获取须要的数据,然后在通过Servlet去交给View层去显示。也便是MVC三层构造的意义
本来想自己画个图,但是奈何越画越繁芜,就从网上找了一个个人以为比较不错的图来进行讲解
就这个图来剖析一波,画的确实挺不错的,首先,我们打开浏览器,输入网址,便是到做事器中要求页面(JSP也可能是别的),然后显示到浏览器上,然后通过点击JSP页面上的内容,提交要求,到做事器中,也就到了Control(Servlet)这一块,Servlet通过剖析要求,知道用户须要什么,须要数据,那么就通过Model,从数据库拿到数据,在将数据显示在JSP中,在将JSP发送回浏览器,显示在用户看,以是我们常常说,JSP便是View层,给用户看的,Servlet作为掌握流程,而编写操作数据库代码,业务逻辑代码就属于Model。这便是MVC的运用。
二、经典三层架构
表示层(web层)、业务逻辑层(service层)、数据访问层(dao层),用一张图来描述这个中的关系
由于现在只学习Servlet,Jsp,以是在表示层中就放的是Servlet和Jsp了,如果学了3大框架,Struts、Hibernate、Spring、会创造Struts是处理表示层的一个框架,而Hibernate是在dao层的一个框架,spring便是service层了。
三、总结
1、经典三层架构和MVC的关系?
他们是两个毫无干系的东西,经典三层架构是一种分层思想,将开拓模式分为了这三层,每个人根据自己的专长,开拓不同的模块,比如,前端工程师,那么就专研表示层即可,想办法如何让页面变的更好看,如何吸引别人,而有些专门做数据库事情的人,就可以只关注操作数据库的活,如何让查询更加快速有效,而不必关注数据该如何显示这种问题。这便是分层带来的巨大好处。
而MVC是一种设计模式,目的是让HTML代码和业务逻辑代码分开,让代码看起来更加清晰,便于开拓。
硬说他们有关系的话,只能说他们有共同的点,分层,解耦。
2、实际项目中的包命名构造,其也是按照三层架构思想来进行编写代码的,
脑袋里要保持着这种思想进行开拓
xxx:代表公司名称
yyy:代表项目名称
com.xxx.yyy.dao dao层接口
com.xxx.yyy.dao.impl dao层实现
com.xxx.yyy.service service层接口
com.xxx.yyy.service.impl service层实现
com.xxx.yyy.web web层
com.xxx.yyy.util 工具包
com.xxx.yyy.domain javabean
3、为了表示这个三层架构,会做一个小的用户管理系统。比较大略的,利用一下三层架构的思想。
就一个大略的增编削查
功能剖析:
注册、登录、查询所有用户、查询详情、修正用户信息、删除用户
技能剖析:
JSP(JSTL、EL)、Servlet、MySQL、javabean、三层架构思想
上一篇:深入学习Java Web(七): JSTL标签库