InternalResourceViewResolver请求流程

当用户对SpringMVC应用程序发起请求时,这些请求都会被 DispatcherServle t处理,通过处理器找到最为合适的 HandlerMapping定义的请求映射中最为合适的映射,然后通过HandlerMapping找到相对应的Handler,然后再通过相对应的 HandlerAdapter 处理该Handler。返回结果是一个ModelAndView对象,当该ModelAndView对象中不包含真正的视图,而是一个逻辑视图路径的时候,InternalResourceViewResolver就会把该逻辑视图路径解析为真正的View视图对象,然后通过View的渲染,将最终结果返回给用户。

 

我们通过在Spring配置文件中配置如下代码使用InternalResourceViewResolver

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
	p:prefix="/WEB-INF/view/" p:suffix=".jsp"></bean>

视图解释器将逻辑视图转换为物理视图:将handler方法(如UserInfoController中的do方法)返回值解析为实际的物理视图,InternalResourceViewResolver视图解析器将handler方法返回值解析为"prefix+返回值+suffix"物理视图,并做请求转发操作
 

当发起请求时到达 DispatcherServlet 类里的 doService()

 在向request里放如众多信息之后执行DispatcherServlet 的doDispatch()方法

在第一个方框中,ha是一个HandlerAdapter,该方法调用目标方法,返回一个ModelAndView对象,无论目标方法返回String类型、ModelMap类型、ModelAndView类型还是View类型,SpringMVC都会转化成一个ModelAndView类型对象。

在第二个方框中,代码用于处理视图,进入该方法

在第一个方框中 如果出现异常,则进入异常映射。

在第二方框中,该方法用于渲染视图

在第一个方框中,View是一个接口,在方框中定义的是一个抽象类。而在改行代码下,则是依次按情况对view赋值。

在第二个方框中,执行该代码,通过解析ViewName(视图名)得到视图。

在第三个方框中,该方法用于真正地渲染视图。鼠标点击该行代码,点击Ctrl+t,选择AbstractView,进入AbstractView抽象类的render方法

 在执行上述红框中,该方法用于合并结果和模型,依旧鼠标点击该行代码,点击Ctrl+t,选择InternalResourceView,进入InternalResourceViewrenderMergedOutputModel方法,

上面红框代码可知该响应为request转发。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring Boot 中,请求的执行流程可以分为以下几个步骤: 1. 客户端发送请求到服务器,请求到达 DispatcherServlet。 2. DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的处理器 Handler。 3. 根据 Handler 信息,调用适当的 HandlerAdapter 进行处理器处理。 4. 处理器 Handler 处理请求,生成 ModelAndView 对象,包含模型数据和视图信息。 5. HandlerAdapter 将处理器处理的结果 ModelAndView 返回给 DispatcherServlet。 6. DispatcherServlet 根据 ModelAndView 中的视图信息,调用 ViewResolver,解析出视图对象。 7. 最终视图对象被渲染并返回给客户端。 具体来说,每个步骤的执行过程如下: 1. 客户端发送请求到服务器,请求到达 DispatcherServlet。 - DispatcherServlet 是 Spring MVC 的核心控制器,接收所有的请求,并将请求分发给相应的处理器进行处理。 - DispatcherServlet 可以通过配置文件或注解配置来进行自定义设置。 2. DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的处理器 Handler。 - HandlerMapping 是用来解析请求 URL 和处理器的对应关系的。 - Spring Boot 中默认使用的是 RequestMappingHandlerMapping。 - HandlerMapping 会根据请求信息,查找匹配的处理器 Handler。 3. 根据 Handler 信息,调用适当的 HandlerAdapter 进行处理器处理。 - HandlerAdapter 是用来处理处理器 Handler 的适配器。 - Spring Boot 中默认使用的是 RequestMappingHandlerAdapter。 - HandlerAdapter 会根据 Handler 的类型,调用对应的方法进行处理。 4. 处理器 Handler 处理请求,生成 ModelAndView 对象,包含模型数据和视图信息。 - 处理器 Handler 是真正处理请求的对象。 - 处理器 Handler 可以是一个普通的 Java 类,也可以是一个注解了 @Controller 或 @RestController 的类。 - 处理器 Handler 会根据请求参数进行处理,并生成 ModelAndView 对象。 - ModelAndView 对象包含了模型数据和视图信息。 5. HandlerAdapter 将处理器处理的结果 ModelAndView 返回给 DispatcherServlet。 - HandlerAdapter 将处理器 Handler 处理的结果 ModelAndView 对象返回给 DispatcherServlet。 - ModelAndView 对象包含了模型数据和视图信息。 6. DispatcherServlet 根据 ModelAndView 中的视图信息,调用 ViewResolver,解析出视图对象。 - ViewResolver 是用来解析视图名称的。 - Spring Boot 中默认使用的是 InternalResourceViewResolver。 - ViewResolver 会将视图名称解析成实际的视图对象。 7. 最终视图对象被渲染并返回给客户端。 - 视图对象会根据模型数据进行渲染,并生成响应结果。 - 最终响应结果会通过 HttpServletResponse 对象返回给客户端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值