Syong : SpringMvc(1)初识

本文详细介绍了SpringMVC框架的基本概念与配置,包括ContextLoaderListener的作用、DispatcherServlet的工作流程,以及如何进行简单搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMvc 第一篇:初识

what
首先我们看一段官网的描述:

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning.The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.

翻译如下:Spring Web MVC是基于Servlet API构建的原始Web框架,并且从一开始就已包含在Spring框架中。
正式名称“ Spring Web MVC”来自其源模块的名称(spring-webmvc),但通常称为“ Spring MVC”。

官网链接:spring官网-springmvc-doc

Begin
看一下官方给的最简单的配置文件

<web-app>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/app-context.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>app</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

</web-app>

First
这个配置文件定义了一个监听器ContextLoaderListener,这个监听器有什么作用呢,我们看这个类的继承关系:

public class ContextLoaderListener extends ContextLoader implements ServletContextListener

ContextLoader主要负责IOC容器的初始化;
ServletContextListener主要负责监听ServletContext的创建与销毁;
也可以这样理解:

当servlet容器(tomcat等)启动一个Project的时候,随之会创建ServletContext,而ServletContextListener监听到ServletContext的创建,会让ContextLoader启动IOC容器的初始化,生成ApplicationContext或WebApplicationContext,绑定到ServletContext

为什么选择监听servletContext呢?

这里就要说到java web 的四大域对象了:
1.Application:也就是ServletContext,它只是一个接口,它的实现是由tomcat去创建的,单实例,整个项目只有一份;
2.Session:每一次会话创建;
3.Request:每一次请求创建;
4.Page:每一次请求JSP页面创建。

综上,选择ServletContext,也就是把Spring容器绑定到Application域,使整个项目的Spring容器只有一个,只创建一次。

Second
接下来该配置文件声明了一个DispatcherServlet(中央处理器),也是SpringMvc最重要的,官方给出的的servlet-mapping是/app/*,也就是说,要访问/app/路径下的任何文件,都要经过DispatcherServlet的统一调度,除非有另外配置,例如不要拦截js,css,jpg等文件。

那么有一个问题是经常被问到的,就是:DispatcherServlet是如何实现用户发送一个请求到返回响应页面的?或者说,SpringMVC的执行流程

参考:SpringMvc工作流程

简单来说,分下面几步:
1.用户在浏览器地址栏上输入一段URL后回车,“网络”会找到对应的服务器上面部署的tomcat,由tomcat去解析找到对应的项目,再把request相关信息交予该项目对应的DispatcherServlet去处理;
2.DispatcherServlet根据request请求信息找到HandleMapping(处理器映射器)找到对应的Handle并返回给DispatcherServlet;
3.DispatcherServlet再将获得的Handle及request请求信息,交由HandleAdapter处理,运行目标Controller并把结果封装成ModelAndView返回给DispatcherServlet;
4.DispatcherServlet再将获得的ModelAndView交由viewResolver(试图解析器)处理,生成view(试图)返回到DispatcherServlet;
5.DispatcherServlet填充数据后,通过response响应返回给用户。

How
简单搭建:SpringMvc简单搭建

注意:

  1. <context:component-scan base-package="">
  2. <mvc:default-servlet-handler/ >
  3. <mvc:annotation-driven />

结束语:优秀是一种习惯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值