SpringMVC的五大核心组件用法及说明

目录
  • SpringMVC的五大核心组件
    • 一、DispatcherServlet
    • 二、HandlerMapping
    • 三、Controller
    • 四、ModelAndView
    • 五、ViewResolver
  • SpringMVC框架的核心组件及其流程图
    • SpringMVC框架
  • 总结

SpringMVC的五大核心组件

  • DispatcherServlet -前端控制器,用于统一接收请求并分发,组织处理请求的流程
  • HandlerMapping -映射请求路径与处理请求的控制器
  • Controller -由开发人员创建的,实际处理请求的控制器
  • ModelAndView -Controllera组件处理完请求后得到的结果,由数据与视图名称组成
  • ViewResolver -视图解析器,可根据视图名称(由ModelAndView:返回)确定需要使用的视图组件

提示:以下是本篇文章正文内容,下面案例可供参考

一、DispatcherServlet

DispatcherServlet:通常称之为“前端控制器”,用于统一接收请求并分发,组织处理请求的流程

-如果是使用web.xml文件配置项目的Web环境的项目,需要显式的在web.xml配置它,例如映射的请求路径,并确保它是Web容器(例如Tomcat)在启动时就初始化的,并在初始化时会加载Spring环境

-如果是使用Spring注解来配置Spring MVC环境的项目,则不需要直接配置它,而是通过自定义一个AbstractAnnotationConfigDispatcherServletlnitializer的子类来间接的配置,例如配置它映射的请求路径

-如果是使用Spring Booti框架的Web项目,你甚至可以不需要知道它的存在,默认映射的请求路径是/*,当然,如果认为有必要的话,也可以配置为其它值

二、HandlerMapping

HandlerMapping:它是一个接口,Spring MVC框架内置了简单的实现类:

SimpleUrlHandlerMapping,用于映射请求路径与处理请求的控制器,但是,在实际应用中,并不会直接使用这个实现,而是使用@RequestMapping注解,或进阶的@PostMapping、@DeleteMapping、@PutMapping、@GetMapping等注解,直接配置请求路径与处理请求的方法的映射关系

三、Controller

Controller:是实际处理请求的控制器

是开发者自行编写的,通常有多个,一般根据需要处理的请求所涉及的核心数据类型来区分,例如与用户相关的请求则创建UserController,与订单相关的请求则创建OrderController…

这些类必须放在组件扫描的包或其子孙包下,并添加@Controller注解,或添加@RestController注解,由于主流的开发模式是服务器端向客户端响应正文,通常使用的是@RestController

一般还会在这些类的声明之前添加@RequestMapping注解,以统一设计URL中的前缀路径

每个控制器类中将有若干个处理请求的方法

四、ModelAndView

ModelAndView:Controller组件处理完请求后得到的结果,由数据与视图名称组成

在实际开发中,由于Spring MVC提供了更加便捷的API,通常并不直接使用这种类型作为方法的返回值,当需要转发数据时,可以在方法的参数列表中添加ModelMap对象用于封装需要转发的数据,并使用String类型的返回值表示视图名称,如果需要重定向,则返回以redirect:作为前缀的Stringl即可

主流的开发模式是服务器端向客户端响应正文,完全不需要使用该类型的对象

五、ViewResolver

ViewResolver:视图解析器,可根据视图名称确定需要使用的视图组件

Spring MVC框架内置了简单的实现类:InternalResourceViewResolver,当使用JSP文件作为视图时将使用它,主要配置prefix7和suffix这2个属性,SpringMVC框架会将orefixl的值、控制器返回的视图名称、suffix的值拼接起来,以确定JSP文件的位置并使用

使用Thymeleaf的模版页面作为视图组件时,则配置ThymeleafViewResolver,配置思想大致相当,但需要另外配置Thymeleaf的模版引擎和模版解析器

主流的开发模式是服务器端向客户端响应正文,完全不需要使用该组件

SpringMVC框架的核心组件及其流程图

SpringMVC框架

1.作用:解决了V-C交互问题,也就是试图与控制器的交互问题。

在原生的Java EE技术中,使用Servlet作为项目中的控制器,用于接收用户的请求,并给予响应结果。

这种做法最大的问题在于:每个Servlet对应一个请求路径,例如:LoginServlet处理login.do的请求,而RegisterServlet处理register.do的请求,所以,会导致Servlet数量太多,不便于管理(无论是从源文件的数量,还是从配置文件的内容),且对象太对而占用大量的内存空间的问题,并且,在请求的处理过程中,还存在许多操作不简单的做法!

2.SpringMVC核心组件及其流程图。

1.DispatcherServlet:前端控制器,负责接收所配置的所有请求(假设配置为*.do,则它将接收所有以.do为后缀的请求),并负责分发这些请求;

2.HandlerMapping:记录了请求路径与处理请求的Controller或其方法的对应关系;

3.Controller:控制器,负责处理具体的请求,每个项目中可能有若干个Controller组件,每个Controller组件中可以有若干个处理请求的方法;

4.ModelAndView:控制器处理完请求后得到的结果,该结果可以包含数据与视图名称;

5.ViewResovler:视图解析器,可以根据视图名称来确定具体的视图组件。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Springboot轻量级的监控组件SpringbootAdmin

    目录 简介 服务端配置 客户端配置 最后 简介 Springboot Admin是一个管理和监控Springboot项目的组件,分为服务端和客户端,两端通过http进行通信.由于其轻量级的特性,所以特别适合中小项目使用. 其效果图如下: 服务端配置 1,引入Springboot admin和Spring Security依赖. <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-

  • 如何实现自定义SpringBoot的Starter组件

    目录 一.前言 1.1.starter加载原理 1.1.1.加载starter 二.自定义starter 2.1.代码 2.1.1.新建springboot项目. 2.1.2.项目构建完成后,在resources文件夹下面新建META-INF文件夹,并新建spring.factories文件. 2.1.3.因为我们是作为插件来使用,所以我们不需要启动类,删除启动类.并新建几个类: 三.组件集成依赖测试 3.1.新启另一个项目中,引入刚刚打包的pom依赖 3.2.新建一个controller,里面

  • SpringCloud Gateway路由组件详解

    目录 简介 核心概念 具体示例 GlobalFilter 简介   Gateway是SpringCloud Alibaba中的路由组件(前身是Zuul),作为浏览器端请求的统一入口.当项目采用微服务模式时,若包含了路由模块,浏览器端的请求都不会直接请求含有业务逻辑的各个业务模块,而是请求这个路由模块,然后再由它来转发到各个业务模块去. 核心概念   Gateway中的三个核心概念:路由.断言(Predicate).过滤器.   路由:由唯一id.目的url.断言和过滤组成   断言:即路由规则,

  • Spring七大组件是哪些以及作用

    目录 核心容器(Spring core) Spring上下文(Spring context) Spring面向切面编程(Spring AOP) Spring DAO模块 Spring ORM模块 Spring Web模块 Spring MVC框架(Spring WebMVC) 核心容器(Spring core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.Spring使用BeanFactory来产生和管理Bean,它是工厂模式的

  • SpringMVC五大组件与执行原理分析总结

    目录 1.DispatcherServlet(前端(核心)控制器) 2.HandlerMapping(处理器映射器) 3.Controller(处理请求的控制器) 4.ModelAndView(封装数据和视图信息) 5.ViewResolver(视图解析器) SpringMVC执行原理 总结 Spring MVC是包含在spring中的一个基于MVC设计思想的Web应用程序框架,目的是简化开发工作,提高开发效率. 优点 和Spring框架无缝集成,能直接使用Spring的IoC容器.AOP支持:

  • 浅谈SpringMVC中的session用法及细节记录

    前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2.SpringMVC特有的@SessionAttributes 我个人比较关注@SessionAttributes的用法,毕竟现在是在用SpringMVC嘛.但是我看网上那些文章,基本都是只说明了基础用法,详细的使用和细节却基本没有,我想这是不够的,所以我自己做了一些测试,然后整理了下代码做了个de

  • springMVC拦截器HandlerInterceptor用法代码示例

    摘要:很多时候我们都会去修改其他同事的bug,甚至是已经离职的同事的bug,有时候我们点击页面去不着到后台对应的是哪个controller,针对这个问题,其实我们可以通过sprngmvc的拦截器来拦击用户的请求从而知道页面请求的是哪个class的哪个方法,当然这些打印日志信息肯能并不适合放在生产环境,或者这个拦截器也是非必要的.... 一.HandlerInterceptor用法 第一步:注册拦截器 <!-- 注册拦截器 --> <mvc:interceptors> <bea

  • SpringMVC中@RequestMapping注解用法实例

    目录 1 修饰类和方法 2 value 3 method 4 params和headers 5 Ant路径 5 @PathVariable 6 HiddenHttpMethodFilter 7 @RequestParam 8 @RequestHeader 9 @CookieValue 总结 1 修饰类和方法 package site.exciter.springmvc.handlers; import org.springframework.stereotype.Controller; impo

  • Springmvc DispatcherServlet原理及用法解析

    DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spring 的所有好处.DispatcherServlet 主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 文件上传解析,如果请求类型是 multipart 将通过 MultipartResolver 进行文件上传解析: 通过 HandlerMapping,将请求映射到处理器(返回一个 Han

  • Springmvc ModelAndView原理及用法详解

    ModelAndView以org.springframework.ui.ModelMap的形式来保持模型数据,通过构造方bai法传入的或者通过实例方法添加的模型数据都将添加到这个ModelMap中.至于ModelMap中保持的模型数据将会在视图渲染阶段,由具体的View实现类来获取并使用. 我们需要为添加到ModelAndView的一组或者多组模型数据提供相应的键(Key),以便具体的View实现类可以根据这些键获取具体的模型数据,然后公开给视图模板.通常,模型中的数据对应的键需要与视图模板中的

  • Spring生命周期回调与容器扩展详解

    本篇主要总结下Spring容器在初始化实例前后,提供的一些回调方法和可扩展点.利用这些方法和扩展点,可以实现在Spring初始化实例前后做一些特殊逻辑处理. 下面主要介绍: 类级别的生命周期初始化回调方法init-method配置.InitializingBean接口和PostConstruct注解 容器级别的扩展BeanPostProcessor接口和BeanFactoryPostProcessor接口 1.类级别生命周期回调 1.1init-method 参照:Springbeanxsdin

  • SpringMVC中的Model对象用法说明

    模型对象的作用主要是保存数据,可以借助它们将数据带到前端. 常用的模型对象有以下几个: ModelAndView(顾名思义,模型和视图,既可以携带数据信息,也可以携带视图信息,常规用法如下) /** * ModelAndView 绑定数据到视图 (ModelMap用于传递数据 View对象用于跳转) * @return * @throws Exception */ @RequestMapping(value="/case2") public ModelAndView case2() t

  • 基于SpringMVC @RequestMapping的参数和用法

    @RequestMapping的参数和用法 RequestMapping里面的注解包含的参数如图: RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. @RequestMapping 除了修饰方法, 还可来修饰类 : 类定义处:提供初步的请求映射信息.相对于 WEB 应用的根目录: 方法处:提供进一步的细分映射信息. 相对于类定义处的 URL. 若类定义处未标注 @RequestMapping,则方法处标

  • Springmvc @PathVariable的用法解析

    目录 @PathVariable的用法解析 问题描述 解析过程 动态参数使用@PathVariable 在Controller层的代码如下 @PathVariable的用法解析 问题描述 @RequestMapping(value = "/auth1/{uuid}/xxx", method = RequestMethod.GET) public void imageCode1(@PathVariable (value = "uuid") String uuid) {

随机推荐