【重温SSM框架系列】6 - SpringMVC执行流程与组件解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【重温SSM框架系列】6 - SpringMVC执行流程与组件解析

SpringMVC执行流程

  1. 用户在浏览器发送请求;
  2. 用户请求达到前端控制器DispatcherServlet,DispatcherServlet收到请求调用HandlerMapping处理器映射器;
  3. 处理器映射器根据XML配置或者注解找到具体的处理器,并将结果返会给前端控制器;
  4. 前端控制器DispatcherServlet调用HandlerAdapter处理器适配器;
  5. 处理器适配器再调用后端控制器Controller执行;
  6. Controller执行并将结果ModelAndView返会给处理器适配器HandlerAdapter;
  7. HandlerAdapter再将Controller执行结果ModelAndView返回给前端控制器;
  8. DispatcherServlet将ModelAndView传给视图解析器ViewReslover;
  9. ViewReslover进行解析并将具体View返回给DispatcherServlet;
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中);
  11. 将渲染后的视图返会给用户。

在这里插入图片描述

SpringMVC的相关组件

组件解析

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

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

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

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

5. 视图解析器:View Resolver
View Resolver 负责将处理结果生成View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View 视图对象,最后对View 进行渲染将处理结果通过页面展示给用户。

6. 视图:View
SpringMVC框架提供了很多的View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

@RequestMapping注解

@RequestMapping注解用于建立请求URL 和处理请求方法之间的对应关系。
就相当于代替了Servlet的配置:

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.java.code.Servlet<servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
<servlet-mapping>

相当于@RequestMapping("/login")

接下来来到@RequestMapping的源码中,如下:
RequestMapping.class

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";

    @AliasFor("path")
    String[] value() default {};

    @AliasFor("value")
    String[] path() default {};

    RequestMethod[] method() default {};

    String[] params() default {};

    String[] headers() default {};

    String[] consumes() default {};

    String[] produces() default {};
}

@Target具有 ElementType.METHOD 和 ElementType.TYPE 两个属性,表示@RequestMapping可以使用在类和方法上。

  • 类上,请求URL 的第一级访问目录。此处不写的话,就相当于应用的根目录;
  • 方法上,请求URL 的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径。

RequestMapping属性解析

  • value

用于指定请求的URL。它和path属性的作用是一样的.

  • method

用于指定请求的方式,包括GET、POST、PUT、DELETE等。

  • params

用于指定限制请求参数的条件。request中必须包含某些参数值时,才让该方法处理。

  • headers

用于指定request中必须包含某些指定的header值,才能让该方法处理请求。

  • consumes

用于指定处理请求的Content-Type,例如application/json, text/html。

  • produces

用于指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。

自定义视图解析器

通过属性注入的方式修改视图的的前后缀。

    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

这样在Controller中方法重定向至某个jsp页面是,只需要返回相对于/WEB-INF/views/的相对路径即可,并且不需要再写.jsp后缀名。

例如,一个请求需要重定向至views文件夹中的success.jsp页面,那么就只需要return “success”
在这里插入图片描述
若是要重定向至views下的user中的profile.jsp页面,那么就只需要return “user/profile”
在这里插入图片描述

目录
相关文章
|
12天前
|
负载均衡 算法 Java
Spring Cloud全解析:负载均衡算法
本文介绍了负载均衡的两种方式:集中式负载均衡和进程内负载均衡,以及常见的负载均衡算法,包括轮询、随机、源地址哈希、加权轮询、加权随机和最小连接数等方法,帮助读者更好地理解和应用负载均衡技术。
|
2天前
|
负载均衡 5G 网络性能优化
深入解析LTE(长期演进技术)的基本架构及其关键组件
深入解析LTE(长期演进技术)的基本架构及其关键组件
18 2
|
22天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
30天前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
23天前
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
50 0
|
11天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
7天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
|
10天前
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
76 23
|
1月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
21天前
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
19 0
Spring高手之路22——AOP切面类的封装与解析

推荐镜像

更多