springmvc视图解析器_SpringMVC详细

#「闪光时刻」主题征文 二期#

MVC是什么?

mvc是模型(model)- 视图(view)- 控制器(controller)的缩写,它是一个设计模式。这三个部分以最少的耦合协同工作,从提高应用的可扩展性及可维护性

mvc的特点

·多个视图可以对应一个模型。按mvc设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,这样,一旦模型发生改变,也易于维护。

·模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、Velocity模版或者直接产生Excel文档等。

·应用被分隔为三层,这降低了各层时间的耦合,提供了应用的可扩展性。

·控制层把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说包含了用户请求权限的概念。

springmvc运行流程

c8f21cd06fab15ee9c20fe81ab5c3327.png

1.用户向服务器发送请求,请求被Spring的前端控制器DispatcherServlet截获。

2.DispatcherServlet对请求URL(统一资源定位符)进行解析,得到URI(请求资源标识符)。然后根据URI,调用HandlerMapping获得该Handler配置的所有相关的对象,包括Handler对象以及Handler对象对应的拦截器,这些对象会被封装到一个HandlerExecutionChain对象当中返回。

3.DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。HandlerAdapter的设计符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是,代码可复用性高。HandlerAdapter会被用于处理多种Handler,调用Handler实际处理请求的方法。

4.提取请求中的模型数据,开始执行Handler(Controller)。在填充Handler的入参过程中,根据配置,Spring将帮你做一些额外的工作。

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

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

7.ViewResolver结合Model和View来渲染视图。

8.将视图渲染结果返回给客户端。

SpringMVC结构

fcd9fc10e277ea1a594c1fce0618da07.png

SpringMVC中Servlet一共有三个层:HttpServletVBean、FrameworkServlet和DispatcherServlet。

HttpServletBean直接继承自java的HttpServlet,其作用是将Servlet中配置的参数设置到相应的属性;

FrameworkServlet初始化了WebApplicationContext;

DispatcherServlet初始化了自身的9个组件

protected void initStrategies(ApplicationContext context) {

initMultipartResolver(context); // 初始化上传文件解析器

initLocaleResolver(context); // 初始化本地化解析器

initThemeResolver(context); // 初始化主题解析器

initHandlerMappings(context); // 初始化处理器映射器,将请求映射到处理器

initHandlerAdapters(context); // 初始化处理器适配器

initHandlerExceptionResolvers(context); // 初始化处理器异常解析器,如果执行过程中遇到异常将交给HandlerExceptionResolver来解析

initRequestToViewNameTranslator(context); // 初始化请求到视图名称解析器

initViewResolvers(context); // 初始化视图解析器,通过ViewResolver解析逻辑视图名到具体视图实现

initFlashMapManager(context); // 初始化flash映射管理器

}

SpringMVC特点

·SpringMVC拥有强大的灵活性、非侵入性和可配置性。

·SpringMVC提供了一个前端控制器DispatcherServlet,开发者无需额外开发控制器对象

·SpringMVC分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器,等等,每一个功能实现由一个专门的对象负责完成。

·SpringMVC可以自动绑定用户输入,并正确地转换数据类型。

·SpringMVC使用一个名称/值的Map对象实现更加灵活的模型数据传输。

·SpringMVC内置了常见的校验器,可以校验用户输入,如果校验不通过,则重定向会输入表单。输入校验是可选的,并且支持编程方式及声明方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值