Spring MVC组件

这篇具有很好参考价值的文章主要介绍了Spring MVC组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.DispatcherServlet前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。

2.HandlerMapping处理器映射器

HandlerMapping负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

3.Handler处理器

它就是我们开发中要编写的具体业务控制器。由DispatcherServlet 把用户请求转发到 Handler。由Handler对具体的用户请求进行处理。

4.HandlAdapter处理器适配器

 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

Spring MVC组件,spring,mvc,java

适配器对应的处理器以及这些处理器的作用:

  1. AnnotationMethodHandlerAdapter 主要是适配注解类处理器,注解类处理器就是我们经常使用的 @Controller 的这类处理器

  2. HttpRequestHandlerAdapter 主要是适配静态资源处理器,静态资源处理器就是实现了 HttpRequestHandler 接口的处理器,这类处理器的作用是处理通过 SpringMVC 来访问的静态资源的请求

  3. SimpleControllerHandlerAdapter 是 Controller 处理适配器,适配实现了 Controller 接口或 Controller 接口子类的处理器,比如我们经常自己写的 Controller 来继承 MultiActionController.

  4. SimpleServletHandlerAdapter 是 Servlet 处理适配器, 适配实现了 Servlet 接口Servlet 的子类的处理器,我们不仅可以在 web.xml 里面配置 Servlet,其实也可以用 SpringMVC 来配置 Servlet,不过这个适配器很少用到,而且 SpringMVC 默认的适配器没有他,默认的是前面的三种

 5.View Resolver视图解析器

ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象返回给DispatcherServlet 

6.View视图渲染器

 view对象会调用render将model中的数据全部存放到request中完成了请求的处理,源码如下:

public interface View {
    String RESPONSE_STATUS_ATTRIBUTE = View.class.getName() + ".responseStatus";
    String PATH_VARIABLES = View.class.getName() + ".pathVariables";
    String SELECTED_CONTENT_TYPE = View.class.getName() + ".selectedContentType";

    @Nullable
    default String getContentType() {
        return null;
    }
   //把model里的数据存放到request,request和response负载跳转	
   void render(Map<String, ?> model, HttpServletRequest request, 
               			HttpServletResponse response) throws Exception;
}

7.SpringMVC执行流程

Spring MVC组件,spring,mvc,java

  • 具体步骤

    Ø 第一步:发起请求到前端控制器(DispatcherServlet)

    Ø 第二步:前端控制器请求HandlerMapping查找 Handler

    Ø 第三步:处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略

    Ø 第四步:前端控制器调用处理器适配器去执行Handler

    Ø 第五步:处理器适配器HandlerAdapter将会根据适配的结果去执行Handler

    Ø 第六步:Handler执行完成给适配器返回ModelAndView

    Ø 第七步:处理器适配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)

    Ø 第八步:前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可

    Ø 第九步:视图解析器向前端控制器返回View

    Ø 第十步:前端控制器进行视图渲染 (将数据(在ModelAndView对象中)填充到request域)

    Ø 第十一步:前端控制器向用户响应结果

 总结:  springmvc的核心组件
    DispatcherServlet(前端控制器):扫描controller、接受请求
    HandlerMapping(处理器映射器):查找handler
    HandlerAdaptor(处理器适配器):调用handler
    ViewResolver(视图解析器):解析具体的页面路径
    view(视图渲染器):把数据填充到request,并跳转页面文章来源地址https://www.toymoban.com/news/detail-778032.html

到了这里,关于Spring MVC组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】Spring MVC程序开发

    Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。它的正式名称是“Spring Web MVC”来自其原模块的名称,但是它通常被称为“Spring MVC” 从上述定义我们可以看到两个信息: Spring MVC 是一个Web框架 Spring MVC 是基于Servlet API构建的 然而要真正的搞懂S

    2024年01月16日
    浏览(55)
  • Java配置方式使用Spring MVC

    上一节,我们学习了如何基于XML配置与注解的方式使用Spring MVC,涉及到三个XML配置文件:Spring配置文件(spring-config.xml)、Spring MVC配置文件(spring-mvc-config.xml)、Web部署描述文件(web.xml),这一节,我们通过案例学习如何基于Java配置类与注解的方式使用Spring MVC,只有Java配

    2024年02月05日
    浏览(46)
  • 【Java EE】关于Spring MVC 响应

    在博主前面写的博客 【Java EE】Spring请求如何传递参数详解 中我们已经设置了响应数据,Http响应结果可以是数据,也可以是静态⻚⾯,也可以针对响应设置状态码, Header信息等 首先我们像创建一个静态界面,创建位置如下: 前端代码如下: 不过这里的后端的代码和以前的代码

    2024年04月14日
    浏览(49)
  • Java配置方式使用Spring MVC:实战练习

    承接上文《Java配置方式使用Spring MVC》 登录页面 - login.jsp 注:这个页面没有JSP代码,其实可以做成静态页面 - login.html 登录成功页面 - success.jsp(必须是动态页面,因为要获取会话对象中的数据) 如果不用JSP的标签库,要获取会话中的数据,要复杂一点 登录失败页面 - failu

    2024年02月05日
    浏览(57)
  • 【Java 中级】一文精通 Spring MVC - 上传(十)

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 高阶 🙉八股文专题:剑指大厂,手撕

    2024年02月11日
    浏览(49)
  • java spring MVC之RESTful快速开发

    我这里有个一springboot项目 我在启动类同目录下创建了一个目录 目录名叫 controller 里面有一个UserController diam结构是这样的 这是一个基础的REST风格风格开发 但其实 我们可以很大程度的简化 这里 我先启动项目 然后用Postman测试 这些都是可以正常访问 和 调用返回的 确认无误之

    2024年02月05日
    浏览(42)
  • 【Java EE】初识Spring Web MVC

    Spring Web MVC 是 基于 Servlet API 构建的原始 Web 框架 ,从⼀开始就包含在Spring框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为)Spring MVC). Servlet是⼀种实现动态⻚⾯的技术.准确来讲Servlet是⼀套Java Web 开发的规范,或者说是⼀套Java Web 开发的

    2024年04月10日
    浏览(56)
  • 【Java 高阶】一文精通 Spring MVC - 基础概念(一)

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 高阶 🙉八股文专题:剑指大厂,手撕

    2024年02月11日
    浏览(45)
  • 【Java 高阶】一文精通 Spring MVC - 转发重定向(四)

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 高阶 🙉八股文专题:剑指大厂,手撕

    2024年02月11日
    浏览(49)
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

    匹配成功返回数据 1. message消息类别 2. ok 3. reson 4. 房间id 5. 双方id 6.白色玩家 一个类记录房间中的信息(房间id,两个用户id,是否为白棋) 信息提示框 处理匹配API 初始化游戏(棋盘,下一个棋子,接受棋子处理响应,判断是否结束) 1. 客户端连接到游戏房间后, 服务器返回

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包