一、什么是MVC框架
MVC提供了模型-视图-控制的体系结构和可以用来开发灵活,松耦合的Web应用程序的组件,MVC导致了应用程序的不同方面(输入逻辑,业务逻辑,UI逻辑)的分离,同时提供了元素之间的松散耦合.
常见的MVC框架比较:
性能上比较:Jsp+Servlet>Struts1.1>spring MVC >struts2
开发效率比较:spring MVC >struts2>struts1.1>Jsp+Servlet
当今企业快速开发用:spring Boot(微框架) spring cloud(分布式开发)
二、概述
Spring MVC是Spring framework的后续产品,已经融合到web flow中,Spring MVC是基于Model2实现的,利用了处理器分离了模型对象,视图,控制,达到松耦合的效果,提高了系统的可重用性,可维护性,以及可扩展性,功能与struts相似,但是实现方式和原理有所不同.
优点:
使用简单,学习成本低
功能强大,容易写出高性能的程序
使用灵活,可以和spring无缝衔接
特点:
Spring为展现层提供的
基于MVC设计理念的优秀WEB框架,是目前最主流的MVC框架之一。
Spring3.0之后全面超越Struts2,成为
最优秀的MVC框架。
SpringMVC通过一套
MVC注解,让POJO成为处理请求的控制器,而无
须实现任何接口。
支持
RESTFUL风格的URL请求。
采用了松散耦合可插拔组件结构,比其他MVC框架更
具扩展性和
灵活性。
三、开始一个简单的框架搭建
1.首先创建一个动态工程
2.加入jar包
3.在web.xml中配置DispatcherServlet
4.加入springmvc配置文件
5.简单编写请求处理器
6.编写succcess.jsp页面
7.结果
8.
DispatcherServlet
Spring Web 模型-视图-控制(MVC)框架是围绕 DispatcherServlet 设计的,DispatcherServlet 用来处理所有的 HTTP 请求和响应。Spring Web MVC DispatcherServlet 的请求处理的工作流程如下图所示:
下面是对应于 DispatcherServlet 传入 HTTP 请求的事件序列:
l
收到一个 HTTP 请求后,DispatcherServlet 根据 HandlerMapping 来选择并且调用适当的控制器。
l
控制器接受请求,并基于使用的 GET 或 POST 方法来调用适当的 service 方法。Service 方法将设置基于定义的业务逻辑的模型数据,并返回视图名称到 DispatcherServlet 中。
l
DispatcherServlet 会从 ViewResolver 获取帮助,为请求检取定义视图。
l
一旦确定视图,DispatcherServlet 将把模型数据传递给视图,最后呈现在浏览器中。
上面所提到的所有组件,即 HandlerMapping、Controller 和 ViewResolver 是 WebApplicationContext 的一部分,而 WebApplicationContext 是带有一些对 web 应用程序必要的额外特性的 ApplicationContext 的扩展。
DispatcherServlet子容器的启动
WebApplicationContext的初始化
我们先看一下该类的继承结构。
根上下文创建完成后, Spring会给每一个DispatcherServlet创建一个容器,其引用保存在其直接父类FrameworkServlet中:
这里是WebApplicationContext的初始化。
我们知道servlet容器(如Tomcat)在创建一个servlet时会首先调用init()方法来初始化servlet,因此应当首先查找该方法。
经过查找分析, 我们发现该容器的创建由父类HttpServletBean的init()方法触发,最后由子类FrameworkServlet完成实际创建工作。
DispatcherServlet请求处理流程
子容器创建完成后,当有请求到来时,DispatcherServlet就可以进行分发处理了。我们首先根据Servlet规范查找doService()方法,这个方法在DispatcherServlet本身就有实现:
分析到这里,DispatcherServlet的分发请求处理流程就一目了然了。
我们可以简单设计一个登陆的列子:
创建一个login.jsp
然后修改index.jsp
添加控制层方法:
结果如下: