Spring MVC温故而知新 – 从零开始

Spring MVC请求流程

Spring MVC框架的整体请求流程如下:

上图中涉及到Spring MVC的几个功能组件:

前端控制器(DispatcherServlet):接收用户请求并返回请求结果。它的作用相当于一个转发器或中央处理器,控制整个执行流程,对各逐渐进行调度降低组件之间的耦合。

处理器映射器(HandlerMapping):根据用户请求的URL,通过注解或者XML配置,查找相应的处理器Handler

处理器适配(HandlerAdapter):根据映射器查找出的Handler,完成调用处理器中的方法

处理器(Handler):请求处理的具体逻辑,返回数据和视图信息

视图解析器(View Resolver):解析具体视图,通过ModelAndView对象中的View信息,将逻辑视图名解析成真正的视图View

请求流程具体步骤详解:

1:用户发起请求,请求会被前端控制器(DispatcherServlet)拦截

2:前端控制器(DispatcherServlet)请求处理器映射器(HandlerMapping)查找Handler

3:处理器映射器(HandlerMapping)根据配置找到相应Handler(可以更具注解或者XML配置),可能包含多个Interceptor拦截器,返回给前端控制器

4:前端控制器(DispatcherServlet)请求处理器适配器(HandlerAdapter)去执行相应的Handler

5:适配器交由对应Handler处理器执行

6:  Handler处理器执行完成后返回ModelAndView对象给处理器适配器

7:处理器适配器接受Handler处理器的返回结果,并将该结果返回给前端控制器(DispatcherServlet)

8:前端控制器(DispatcherServlet)接收处理器适配器返回的数据和视图信息,请求视图解析器,解析对应的视图

9:视图解析器根据View信息匹配的相应的视图结果,反回给前端控制器

10:前端控制器接收具体视图,进行视图渲染,将Model数据填充到View视图中,生成最终视图

11:前端控制器向用户返回结果

从零开始搭建demo

创建工程:

Eclipse下新建一个动态Web项目

工程默认目录结构:

添加jar包依赖

WebContent > WEB-INF > lib 文件夹下导入相应的jar包,其中核心的jar包是spring-webmvc-5.0.0.RELEASE.jar,其他是几个主要是spring用于管理上下文和beande 包、jstl标签库和一个用于打印日志的log包:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EwUXmtGO-1651643083834)(https://images2018.cnblogs.com/blog/577318/201805/577318 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 -20180517234939619-1967526227.png)]

在web.xml中配置前端控制器

前端控制器相当于Spring MVC的专有servlet,用于拦截所有符合条件的请求,交由框架做后续处理

复制代码

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns=“http://xmlns.jcp.org/xml/ns/javaee”

xsi:schemaLocation=“http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd”

id=“WebApp_ID”

version=“3.1”>

<servlet>

<servlet-name>springMvcNext</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>springMvcNext</servlet-name>

<url-pattern>/</url-pattern> <!–根据url-pattern设定的规则拦截用户发来的请求 此处拦截所有请求,包括静态资源 ->

</servlet-mapping>

</web-app>

复制代码

其中标签中定义url匹配规则为符合*.action的形式,对应的servlet名为springMvcNext,而配置的控制器为org.springframework.web.servlet.DispatchServlet,该控制器为当前SpringMVC项目的前端控制器,标签为当前控制器依赖的参数,两个参数分别代表上下文参数和参数加载路径。

关于classpath:代表web项目编译后编译后的输出路径

配置spring MVC配置

在java源代码更目录下添加applicationContext.xml文件

具体内容:

复制代码

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:p=“http://www.springframework.org/schema/p”

xmlns:context=“http://www.springframework.org/schema/context”

xmlns:mvc=“http://www.springframework.org/schema/mvc”
eans"

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:p=“http://www.springframework.org/schema/p”

xmlns:context=“http://www.springframework.org/schema/context”

xmlns:mvc=“http://www.springframework.org/schema/mvc”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值