当前位置:网站首页 > R语言数据分析 > 正文

webflux和webmvc区别(webform和mvc)



  • 请求处理方法执行完成后,最终返回一个 ModelAndView 对象。对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个 ModelAndView 对象,它包含了逻辑名和模型对象的视图
  • Spring MVC 借助视图解析器(ViewResolver)得到最终的视图对象(View),最终的视图可以是 JSP ,也可能是 Excel、JFreeChart等各种表现形式的视图
  • 对于最终究竟采取何种视图对象对模型数据进行渲染,处理器并不关心,处理器工作重点聚焦在生产模型数据的工作上,从而实现 MVC 的充分解耦

视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。为了实现视图模型和具体实现技术的解耦,Spring 在 org.springframework.web.servlet 包中定义了一个高度抽象的 View 接口:

springmvc默认解码方式_spring

常用的视图实现类

springmvc默认解码方式_mvc_02

SpringMVC 为逻辑视图名的解析提供了不同的策略,可以在 Spring WEB 上下文中配置一种或多种解析策略并指定他们之间的先后顺序。每一种映射策略对应一个具体的视图解析器实现类。

视图解析器的作用比较单一:将逻辑视图解析为一个具体的视图对象。

所有的视图解析器都必须实现 ViewResolver 接口:

springmvc默认解码方式_mvc_03

程序员可以选择一种视图解析器或混用多种视图解析器。每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,可以通过 order 属性指定解析器的优先顺序order 越小优先级越高。 SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则将抛出 ServletException 异常。

JSP 是最常见的视图技术,可以使用 InternalResourceViewResolve作为视图解析器:

springmvc默认解码方式_java_04

请求转发

都可以跳到index.jsp

1.任何的方法都会进入到doDispatch(request, response);中

2.在它的方法中mv = ha.handle(processedRequest, response, mappedHandler.getHandler());,有处理器适配器调用生成ModelAndView

3.调用handle方法,是由子类AnnotationMethodHandlerAdapter实现的,里面会调用invokeHandlerMethod(request, response, handler)方法。

springmvc默认解码方式_servlet_05

springmvc默认解码方式_spring_06

最终会返回ModelAndView对象,view就是要跳转的页面,model里面就是数据。

4.方法继续放下走到processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

5.render(mv, request, response);

其中有一个重要的方法resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);,解析试图名,点进去看看。

springmvc默认解码方式_springmvc默认解码方式_07

试图解析器根据方法的返回值,得到一个view对象。要是不为空,说明能解析。

view = createView(viewName, locale);这个方法,是真正的创建试图。

springmvc默认解码方式_mvc_08

创建完成,会有一个view

springmvc默认解码方式_java_09

视图解析器得到View对象的流程就是,所有配置的视图解析器都来尝试根据视图名(返回值)得到View(试图)对象;如果能得到就返回,得不到就换下一个试图解析器。

6.view进行渲染。

springmvc默认解码方式_springmvc默认解码方式_10

springmvc默认解码方式_mvc_11

视图解析器只是为了得到试图对象;视图对象才能真正的转发(将模型数据全部放在请求域中)或者重定向到页面,视图对象才能渲染试图。

springmvc默认解码方式_mvc_12

但是请求别的接口的时候,都报错404。

springmvc默认解码方式_mvc_13

配置mvc:view-controller会导致其他请求路径失效

解决办法:

springmvc默认解码方式_mvc_14

springmvc默认解码方式_servlet_15

springmvc默认解码方式_springmvc默认解码方式_16

到此这篇webflux和webmvc区别(webform和mvc)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • prdlms怎么读(prblms怎么念)2026-02-04 14:45:07
  • junit5教程(junitplatform)2026-02-04 14:45:07
  • pycharm conda 虚拟环境(pycharm使用虚拟环境)2026-02-04 14:45:07
  • lvcreate(lvcreate命令)2026-02-04 14:45:07
  • nsenter命令详解(nlst命令)2026-02-04 14:45:07
  • swagger 返回map(swagger map类型)2026-02-04 14:45:07
  • entrants翻译(enchant翻译)2026-02-04 14:45:07
  • swagger2配置security(swagger2配置登录)2026-02-04 14:45:07
  • swagger的配置(swagger configuration)2026-02-04 14:45:07
  • iphone15promax(iphone15promax锁屏如何黑屏)2026-02-04 14:45:07
  • 全屏图片