【SpringMVC】——特点、开发步骤、执行流程

        MVC是所有面向对象程序设计语言应该遵循的规范,由三部分构成:Model(模型)、View(视图)、Controller(控制层),以最少耦合协同工作,提高程序的可扩展性和维护性。

        经典MVC思想与Web应用MVC区别:经典MVC思想当模型数据发生改变会及时通知视图页面发送改变,而Web应用MVC是一种请求/响应模式,用户不主动发请求,视图将无法自主更新。

  SpringMVC是Spring框架提供构建Web应用程序的全功能MVC模块,具有以下特点

  • 拥有强大的领会行、非入侵性和可配置性;
  • 提供了一个前端控制器DispatcherServlet,无需额外开发控制器对象;
  • 分工明确,包括控制器、验证器、模型对象、命令对象、处理程序映射试图解析器等,每个功能有一个专门的对象负责;
  • 可自动绑定用户输入,正确的转换数据类型,如:SpringMVC能自动解析字符串,并设置为模型的int或float类型属性;
  • 使用名称/值的Map对象实现更加灵活的模型数据传输;
  • 内置常见的校验器,可校验用户输入,若不通过则重定向回输入表单,输入校验是可选的,支持编码方式及声明方式;
  • 支持国际化,根据有用户区域显示多国语言,国际化配置非常简单;
  • 支持多种视图技术,如:JSP、Velocity、FreeMarker。
  • 提供了简单、强大的JSP标签库,支持数据绑定,让编写JSP更容易。

Spring MVC应用的开发步骤(可执行一次完整的请求—>响应过程):

  1. 在web.xml文件中定义前端控制器DispatcherServlet来拦截用户请求;
  2. 如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果只以GET方式发送请求,则无须这一步;
  3. 定义处理用户请求的Handle类,可以实现Controller接口或使用@Controller注解。控制器有两部分组成:(1)拦截所有用户户请求和处理请求的通用代码由前端控制器DispatcherServlet完成(2)业务控制如调用后台逻辑代码,返回处理结果由Controller处理;
  4. 配置Handle,两种方式:配置xml、注解;
  5. 编写视图资源

Spring MVC执行流程


  1. 用户向服务器发送请求,请求被Spring的前端控制器DispatcherServlet截获;
  2. DispatcherServlet对请求URL(统一资源定位符)进行解析,得到URI(请求资源标识符)。根据URI调用HandlerMapping获得Handler配置的所有相关对象,包括Hander对象以及Handler对象对应的拦截器,这些对象会被封装到一个HanderExecutionChain对象中返回;
  3. DispatcherServlet根据获取的Handler,选择合适的HandlerAdapter(HandlerAdapter的设计符合面向对象中的单一职责原则,代码架构清晰,便于维护,且代码可复用性高)。HandlerAdapter用于处理多种Handler,调用Handler实际处理请求的方法,如hello方法。
  4. 提取请求中的模型数据,开始执行Handler(Controller)。在填充Handler的入参过程中,根据配置,Spring将帮助我们做一些额外的工作:
消息转换:将请求消息(如Json、xml等数据)转换成一个对象,并将其转换为指定的响应消息。
数据转换:对请求消息进行数据转换,如String转成Integer、Double等。
数据格式化:对请求消息进行数据格式化,如字符串转换成格式化数字或者格式化日期等。

数据验证:验证数据的有效性(长度、格式等),验证结果存储到BingdingResult或Error中。

     5.Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象,其中包含视图名或视图名和模型;

     6.根据返回的ModelAndView,选择一个合适的ViewResolvr(视图解析器)返回给DispatcherServlet;

     7.ViewResolvr结合Model和View来渲染试图并将渲染结果返回客户端。

    综上可以看出SpringMVC在开发中为我们省去了很多步骤,让我们不用关心这些对象如何工作,只需在Handler(Controller)中完成对请求的业务处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值