返回顶部
首页 > 资讯 > 后端开发 > Python >深入理解SpringMVC中央调度器DispatcherServlet
  • 516
分享到

深入理解SpringMVC中央调度器DispatcherServlet

2024-04-02 19:04:59 516人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录springMVC请求处理过程:Srpingmvc容器和spring ioc容器关系基于Maven创建的一个springmvc工程。1.创建maven项目中使用到了自动创建骨架2

springMVC是spring的一个模块,专门做web的。

SpringMVC请求处理过程:

请求发送,根据url-pattern,转发发送给中央调度器DispatcherServlet,中央调度器分配请求到自定义的Controller对象上,进行处理。

核心的就是中央调度器,所以我们在web.xml文件中要初始化配置中央调度器,中央调度器创建的同时,他会同时创建ioC springMVC IOC容器,用于管理对象的。 springmvc存放controller对象 view视图对象

如下是详情图:

HandlerMapping处理映射,作用是根据请求的url与controller里面的方法的@RequestMapping("/url") 的url比较 找到相应的Handler(方法)。

再详细版:

SrpingMVC容器和spring IOC容器关系

springmvc ioc容器是spring ioc容器的子容器。 SpringMVC的IOC容器中的bean可以来引用 Spring IOC 容器中的 bean. 返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!多个 Spring IOC 容器之间可以设置为父子关系,以实现良好的解耦。

关系图:

基于maven创建的一个springmvc工程。

1.创建maven项目中使用到了自动创建骨架

选择webapp,这样就会自动生成springmvc项目的一些基本文件。

2.配置java 文件 和资源文件

3.添加jar包**

springmvc项目需要两个依赖 一个是spring-webmvc 封装了基本的sping里面的web部分模块 有sping-context ,spring-aop

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

4.springMVC项目web.xml初始化配置中央调度器以及自定义springmvc.xml文件

Tomcat启动的时候,一般会加载web.xml里面配置, 因为DispatcherServelt是调度器,负责调度用户的请求到相应的servlet处理,DispatcherServlet创建的时候,同时也会创建springmvc容器,那么tomcat启动之后,其他ervlet就可以使用了。

web.xml:

  • 中央调度器dipathcerServlet配置创建 同时创建spingmvc配置
  • spring监听器配置
  • 字符集过滤器配置
<?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"
         version="3.1">
<!--这个web-app版本低了还会有问题-->
<servlet>
  <servlet-name>springDispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <!--1.springmvc配置文件-->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
    <!--拦截所有的url 所有url会被中央调度器处理转发-->
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!--2.注册spring的监听器  自定义配置文件-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>
  <!--spring监听器依赖-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--3.post请求乱码解决 字符集过滤器-->
  <!-- -->
  <filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceRequestEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>forceResponseEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

springmvc.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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--类注入IOC springMVC容器 装servlet容器的,这里用扫描-->
    <context:component-scan base-package="com.chuan.sringmvc1.controller"/>
    <!--JSON格式数据转换  注解驱动-->
    <mvc:annotation-driven/>
    <!--视图解析器InternalResourceViewResolver,帮助开发人员设置视图文件的路径-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix"  value="/WEB-INF/view/"/>  <!--设置前缀  value指的是路径-->

        <!-- <property name="suffix" value=".jsp"/>  这是后缀-->
    </bean>
<!--tomcat处理静态资源的默认servlet处理器-->
<mvc:default-servlet-handler/>
    <!--手动配置的静态资源处理-->
<mvc:resources mapping="/static/picture/*" location="/static/picture/"/>
</beans>

到此这篇关于SpringMVC核心之中央调度器DispatcherServlet的文章就介绍到这了,更多相关SpringMVC中央调度器DispatcherServlet内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 深入理解SpringMVC中央调度器DispatcherServlet

本文链接: https://lsjlt.com/news/148117.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 深入理解SpringMVC中央调度器DispatcherServlet
    目录SpringMVC请求处理过程:SrpingMVC容器和spring IOC容器关系基于maven创建的一个springmvc工程。1.创建maven项目中使用到了自动创建骨架2...
    99+
    2024-04-02
  • 深入理解React调度(Scheduler)原理
    目录异步调度时间分片异步调度原理总结异步调度 问题:由于对于大型的 React 应用,会存在一次更新,递归遍历大量的虚拟 DOM ,造成占用 js 线程,使得浏览器没有时间去做一些动...
    99+
    2024-04-02
  • 深入理解SpringMVC参数解析器
    这篇文章主要讲解了“深入理解SpringMVC参数解析器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“深入理解SpringMVC参数解析器”吧!1.参数解析...
    99+
    2024-04-02
  • 深入理解springMVC中的Model和Session属性
    目录springMVC的范围spring的@MODELATTRIBUTEspring Model和Request后边的原因Spring的@SESSIONATTRIBUTE控制对话属性...
    99+
    2024-04-02
  • sql server中的任务调度与CPU深入讲解
    一. 概述 我们知道在操作系统看来, sql server产品与其它应用程序一样,没有特别对待。但内存,硬盘,cpu又是数据库系统最重要的核心资源,所以在sql server 2005及以后出现了SQLOS...
    99+
    2024-04-02
  • 深入理解Go语言中的函数调用
    函数是编程语言中十分重要的一个概念,它可以帮助我们将一段代码封装起来,以便在程序中反复调用。在Go语言中,函数的调用方式具有一些特殊之处,本文将深入探讨Go语言中的函数调用,并通过具体...
    99+
    2024-04-02
  • 深入理解Pytorch微调torchvision模型
    目录一、简介二、导入相关包三、数据输入四、辅助函数1、模型训练和验证2、设置模型参数的'.requires_grad属性'一、简介 在本小节,深入探讨如何对torchvision进行...
    99+
    2024-04-02
  • 怎么深入Java Timer 定时任务调度器实现原理
    这篇文章将为大家详细讲解有关怎么深入Java Timer 定时任务调度器实现原理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用 Java 来调度定时任务时,我们经常会使用 Timer 类...
    99+
    2023-06-02
  • 深入理解Vue的过度与动画
    1.在插入、更新、移除DOM元素时,在合适的时候给元素添加样式类名 2.元素有一个进入过程:Enter,一个离开过程Leave。 两个过程都有一个初始态()和终止态(-to)和两态之...
    99+
    2024-04-02
  • sql server中的任务调度与CPU深入讲解是怎样的
    本篇文章为大家展示了sql server中的任务调度与CPU深入讲解是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. 概述我们知道在操作系统看来, sql...
    99+
    2024-04-02
  • 深入理解php中unset()
    目录概述变化情况情况一:情况二:情况三:概述 unset()经常会被用到,用于销毁指定的变量,但它有自己的行为模式,如果不仔细的话可能会被中文解释给迷惑: 先来看看官方文档的说法: ...
    99+
    2024-04-02
  • 深入理解Android之接口回调机制
    刚开始学对于这个机制理解不够深刻,现在重新整理下思路。开发中,接口回调是我们经常用到的。 接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行。 首先解决啥是回调: ...
    99+
    2022-06-06
    回调 接口 Android
  • 关于JavaScript回调函数的深入理解
    目录前言快速回顾:JavaScript 函数什么是函数?声明一个函数调用一个函数什么是回调函数?为什么我们需要回调如何使用回调函数回调的工作方式Javascript 回调是异步的吗?...
    99+
    2024-04-02
  • 如何深入理解Pytorch微调torchvision模型
    如何深入理解Pytorch微调torchvision模型,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、简介在本小节,深入探讨如何对torchvision进行微调和特征提...
    99+
    2023-06-25
  • Cloneable接口的作用与深入理解深度克隆与浅度克隆
    Cloneable接口的作用是标识一个类可以被克隆。当一个类实现了Cloneable接口,就表示该类可以创建一个与自身相同的对象。深...
    99+
    2023-09-13
    Cloneable
  • 深入理解高并发编程 - 深度解析Thread 类的源码
    继承关系 先看源码:Thread 类实现了 Runnable 接口 publicclass Thread implements Runnable { 而 Runnable 被@FunctionalIn...
    99+
    2023-09-08
    java
  • 深入理解Python虚拟机中调试器实现原理与源码分析
    目录让程序停下来cpython 王炸机制 —— tracing自己动手实现一个简单的调试器python 官方调试器源码分析总结调试器是一个编程语言非常重要的部...
    99+
    2023-05-17
    Python虚拟机 调试器原理 Python虚拟机 调试器 Python虚拟机 Python 调试器
  • 深入理解Java中的HashMap
    目录一、HashMap的结构图示二、HashMap的成员变量以及含义2.1、hash方法说明2.2、tableSizeFor方法说明三、HashMap的构造方法四、HashMap元素...
    99+
    2024-04-02
  • 深入理解html5中的position
    在HTML5中,position属性用于控制元素在文档中的定位方式。它有四个可选值:static(默认值)、relative、fix...
    99+
    2023-09-14
    html5
  • 深入理解Pytorch中的torch.matmul()
    目录torch.matmul()语法作用举例情形1: 一维 * 一维情形2: 二维 * 二维情形3: 一维 * 二维情形4: 二维 * 一维情形5:两个参数至少为一维且至少一个参数为...
    99+
    2023-05-15
    Pytorch torch. matmul() torch. matmul()
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作