标签:框架 SpringMVC 视图 HandlerAdapter 处理器 DispatchServlet View
MVC:指一种架构模式。用来将业务逻辑,数据,显示分离的方法来组织代码。
M(model):模型。提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:数据DAO和行为Service。
V(view):视图。负责进行模型的展示,一般就是我们看到的用户界面,客户想要看到的东西。
C(controller):控制器。接受用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返会给视图,由视图负责展示。也就是说控制器做了个调度员的工作。
职责:控制器: 1. 取得表单数据;2.调用业务逻辑;3.转向指定的页面;
模型: 1.业务逻辑; 2.保存数据的状态;
视图: 1.显示视图。
作用:提高了代码的复用率和项目的扩展性,并且大大降低了项目的维护成本。
SpringMVC是Spring Framework的一部分,使基于Java实现MVC的轻量级Web框架。
SpringMVC的特点:
1. 轻量级,简单易学
2. 高效,基于请求响应的MVC框架
3. 与Spring兼容性好,无缝结合
4. 约定大于配置
5. 功能强大:RESTful,数据验证,格式化,本地化,主题等;
6. 简洁灵活
Spring的web框架围绕DispatchServlet(调度Servlet)设计;SpringMVC框架像许多框架一样,以请求为驱动,围绕一个中心Servlet分派请求以及提供
其他功能,DispatchServlet是一个实际的Servlet(它继承了HttpServlet)
--涉及组件分析
1.DispatchServlet:前端控制器(不需要程序员开发)由框架提供,在web.xml中配置。
作用:接受请求,响应结果,相当于转发器,中央处理器。
2.HandlerMapping:处理器映射器(不需要程序员开发)由框架提供,
作用:根据请求的URL查找Handler(处理器/Controller),可以通过xml和注解方式来映射。
3.HandlerAdapter:处理器适配器(不需要程序员开发)由框架提供,
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler中的方法。
4.Handler:处理器,也称之为Controller,需要程序员开发
注意:编写Handler使要按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。
作用:接受用户请求,调用业务方法处理请求,也称之为后端控制器。
5.ViewReslover:视图解析器(不需要程序员开发)由框架提供,
作用:进行视图解析,把逻辑视图解析成真正的物理视图。
SpringMVC框架支持多种View视图技术,包括:jstlView,freemarkerView,ThymelwafView等
6.View:视图(需要程序员开发)
作用:把数据展现给用户的页面。View是一个接口实现类支持不同的View技术(jsp,freemarker,pdf等)
执行流程:
1.用户发出请求被DispatchServlet拦截并进行处理
2.DispatchServlet收到请求调用HandlerMapping(处理器映射器)
3.HandlerMapping找到具体的处理器(查找xml配置或注解配置),生成处理器对象以及处理器拦截器(如果有)
随后再一起返回给DispatchServlet。
4.DispatchServlet调用HandlerAdapter(处理器适配器)。
5.HandlerAdapter经过适配器调用具体的处理器(Handler/Controller)
6.Controller执行完成后返回ModelAndView对象
7.HandlerAdapter将Controller执行结果ModelAndView传给ViewReslover(视图解析器)
8.DispatchServlet将ModelAndView后返回具体View(视图)给DispatchServlet。
9.ViewReslover解析ModelAndView后返回具体View(视图)给DispatchServlet。
10.DispatchServlet根据View进行渲染视图(即将模型数据填充视图中)。
11.DispatchServlet响应 View给用户。
标签:框架,SpringMVC,视图,HandlerAdapter,处理器,DispatchServlet,View 来源: https://www.cnblogs.com/luoshen-gaiya/p/16228266.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。