Java框架(十三)之springMVC(简介)

1.为什么使用springMVC

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱
动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开的。

2.MVC设计模型

在这里插入图片描述

3.springMVC的强大之处

  • Spring MVC 实现了即用的 MVC 的核心概念。它为控制器和处理程序提供了大量与此模式相关的功能。并且当向 MVC 添加反转控制(Inversion of Control,IoC)时,它使应用程序高度解耦,提供了通过简单的配置更改即可动态更改组件的灵活性。Spring MVC 为您提供了完全控制应用程序的各个方面的力量。
  • Spring 的 Web MVC 模块是围绕 DispatcherServlet 而设计的。
    DispatcherServlet 给处理程序分派请求,执行视图解析,并且处理语言环境和主题解析,此外还为上传文件提供支持。
  • DispatcherServlet 通过使用处理程序映射来决定哪一个处理程序应当处理传入的请求(处理器映射器决定调用什么控制器)。处理程序映射只是用于标识使用哪一个处理程序来处理特定 URL 模式的映射。处理程序是只有一种方法 ModelAndView handleRequest(request,response) 的控制器接口的实现。Spring 还有一些可用的高级处理程序实现;其中一个重要的高级处理程序实现是 SimpleFormController,它提供了将命令对象绑定到表单、对其执行验证等功能。

4.springMVC优势

  • 清晰的角色划分:核心控制器(DispatcherServlet 不用写)、请求到处理器映射器(HandlerMapping 不用写)、处理器适配器(HandlerAdapter 不用写)、视图解析器(ViewResolver不用写)、处理器或页面控制器(Controller 程序员自己写 相当于web阶段的servlet)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象 AbstractCommadController)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
  • 分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;
  • 封装数据简单
  • 和Spring 其他框架无缝集成,是其它Web框架所不具备的;

5.springMVC的运行原理

在这里插入图片描述
核心架构的具体流程步骤如下:
(1)首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;
(2)DispatcherServlet——>HandlerMapping(处理器映射器),HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;
把请求映射给某一个处理器(控制器)
(3)DispatcherServlet——>HandlerAdapter(处理器适配器),HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;
(4)HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);处理器适配器 执行 处理器(控制器) 返回 ModelAndView
(5) ModelAndView的逻辑视图名——> ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;视图解析器 解析 modelAndView 为一个视图
(6)View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
(7)返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

6.HandlerMapping(处理器映射器)

(1)BeanNameUrlHandlerMapping :根据bean的name找处理器
<!-- 
              处理器映射器:根据bean的name属性查找处理器(控制器)
              则查找bean的name属性为/hello的处理器处理该请求
              默认
          -->
         <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
(2) SimpleUrlHandlerMapping:可以配置多个映射路径,根据bean的id找处理器
 <!-- 
         	根据id查找
         	根据url匹配,同一个处理器可以配置多个路径  根据id属性查找
          -->
          <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	          	<property name="mappings"><!-- mappings  是properties类型 -->
	          		<props>
	          			<prop key="/aaa">hello</prop>
	          			<prop key="/bbb">hello</prop>
	          			<prop key="/ccc">hello1</prop>
	          		</props>	
	          	</property>
          </bean>
(3)ControllerClassNameHandlerMapping:根据控制器的class类名找。
<!-- 根据处理器的类名称查找
          	只要输入的路径前两个字符 跟controller的类名匹配就能找到
           -->
         
         <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>

7.HandlerAdapter(处理器适配器)

(1).SimpleControllerHandlerAdapter:表示所有实现了org.springframework.web.servlet.mvc.Controller 接口的Bean 可以作为Spring Web MVC 中的处理器。
(2).HttpRequestHandlerAdapter:实现了HttpRequestHandler接口的处理器
适配器可以共存,只是不同的适配器处理实现不同的接口的处理器。

注意:SimpleControllerHandlerAdapter是默认的适配器。如果使用后面这个适配器必须手动配置。否则将会访问失败。

总结:
  • 实现了Controller接口的处理器 (Controller)

三种映射器都支持
SimpleUrlHandlerMapping
BeanNameHandlerMapping
ControllerClassHandlerMapping
处理器适配器-SimpleControllerHandlerAdapter
不支持HttpRequestHandlerApdater

  • 实现了HttpRequestHandler接口的处理器

只支持两种映射器:
SimplerUrlHandlerMapping 根据bean的id 查找 且可以配置多个路径
BeanNameUrlHandlerMapper 根据bean的name属性找
不支持:ControllerClassNameHandlerMapping
处理器适配器-HttpRequestHandlerAdapter
不支持SimpleControllerHandlerAdapter

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值