一、Web的MVC设计理念和MVC框架:
之前在Web篇04中已经详述了Servlet、TomCat、JSP和Web.xml之间的联系;
(1)浏览器发送请求到收到响应,简要的过程如下:
浏览器发送请求后,由Web.xml中规定的协议,进入TomCat中特定的Servlet,服务器先到Web-Content中找有没有对应的html/jsp页面,如果没有再到WEB-INF目录下的xml配置文件中找映射,通过映射找到响应文件html/jsp,响应给浏览器。
(2)浏览器再点击JSP页面后,再次发送请求,接下来的处理就可以用下面的MVC设计理念来讲解:
MVC,全称Model View Controller,即模型-视图-控制器;
1. Model(模型):
是Web应用中用于处理数据逻辑的部分,包括Service层和Dao层;
Service层用于和数据库联动,放置业务逻辑代码,处理数据库的增删改查,
Dao层用于放各种接口,以备调用;
2. View(视图):
是Web应用中处理响应给客户的页面的部分,例如我们写的html静态页面,jsp动态页面,这些最终响应给浏览器的页面都是视图;
通常视图是依据模型数据来创建的;
3. Controller(控制器):
在Web应用中,简而言之,就是Servlet,或者SpringMVC框架中加了注解@Controller的方法(实际上一个方法就相当于一个对应的Servlet);
它们三者之间的关系,用一张在网上找的图概况,如下:
首先,浏览器发送请求,JSP页面响应给客户,客户点击JSP页面上的内容,再次提交请求;
这一次,请求到Controller控制器模块,也就是Servlet服务器中,
Servlet服务器通过分析请求,判断客户的需求,
然后调用Model模型,用Service层处理数据库的增删改查,用Dao层提供接口支持,
然后Servlet将数据驱动到View视图层也就是JSP页面中,
将JSP页面响应给浏览器,客户看到动态的内容。
在这个过程中,最典型的的MVC模型就是 JavaBean + JSP + Servlet的模式,各司其职,分工合作;这种设计理念可以把html代码块和业务逻辑代码块分开,让代码更清晰,便于开发。
而依据MVC设计模式,来搭建的MVC框架,则是该设计模式思想的具体实现,它强制性的使应用程序输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
二、Web的经典三层架构
Web经典三层架构是指:
1. 表现层,UI,User Interface:
主要接受用户的请求和把相应的页面响应给用户浏览器;
其中aspx页面,对应MVC中的视图(View),即JSP页面;
而aspx.cs页面,对应MVC中的控制器(Controller),即Servlet服务器;
2. 业务逻辑层,BLL,Business Logic Layer:
对应MVC中模型(Model)中的Service层,与数据库联动处理增删改查;
3. 数据访问层/持久层,DAL,Data Access Layer:
对应MVC中模型(Model)中的Dao层,提供接口支持;
其余的文件,例如JavaBean作为原材料被三层架构调用,贯彻三层接口;xml配置文件给三层架构提供良好的配置环境。
借用一张网上的图来展示:
这种分层式结构,可以降低各层之间的依赖,降低耦合,是一种弱耦合结构。
三、Web的五大主流框架(简介)
1. Spring框架
核心是DI(Dependency Injection)(依赖注入)和IOC(Inversion of Control)(反转控制);
(1)Spring框架对Web的支持是,SpringMVC框架
(2)Spring框架对持久层的支持是,JDBCTemplate
2. SpringMVC框架
优势是优化了B/S结构(浏览器-服务器),简化了Servlet的创建
在其他框架中,一个url请求需要new一个新的Servlet与之相对应,
在SpringMVC框架中,由于DispatcherServlet的存在,任何的url(除了jsp外)它都能处理,然后依据映射找到一个对应的@Controller的注解类,就相当于一个Servlet;
相当于把Servlet转变成了注解类,多个注解类可以写在同一个java文件中,代码方式简洁、优雅;
补充一下maven仓库的作用:
maven仓库可以通过<denpendency 标签,由GAV信息导入所需要的jar包,不同的jar包GAV代码在官网可直接查找,导入jar包的方式简单方便。
3. Mybatis框架
它的作用是可以与数据库进行联动,在其中写sql语句,进行数据库的增删改查;
4. Hibernate框架
5. Struts2框架