深入理解SpringMVC中央調(diào)度器DispatcherServlet
springMVC是spring的一個(gè)模塊,專門做web的。
SpringMVC請(qǐng)求處理過(guò)程:
請(qǐng)求發(fā)送,根據(jù)url-pattern,轉(zhuǎn)發(fā)發(fā)送給中央調(diào)度器DispatcherServlet,中央調(diào)度器分配請(qǐng)求到自定義的Controller對(duì)象上,進(jìn)行處理。
核心的就是中央調(diào)度器,所以我們?cè)趙eb.xml文件中要初始化配置中央調(diào)度器,中央調(diào)度器創(chuàng)建的同時(shí),他會(huì)同時(shí)創(chuàng)建IOC springMVC IOC容器,用于管理對(duì)象的。 springmvc存放controller對(duì)象 view視圖對(duì)象

如下是詳情圖:
HandlerMapping處理映射,作用是根據(jù)請(qǐng)求的url與controller里面的方法的@RequestMapping("/url") 的url比較 找到相應(yīng)的Handler(方法)。

再詳細(xì)版:

SrpingMVC容器和spring IOC容器關(guān)系
springmvc ioc容器是spring ioc容器的子容器。 SpringMVC的IOC容器中的bean可以來(lái)引用 Spring IOC 容器中的 bean. 返回來(lái)呢 ? 反之則不行. Spring IOC 容器中的 bean 卻不能來(lái)引用 SpringMVC IOC 容器中的 bean!多個(gè) Spring IOC 容器之間可以設(shè)置為父子關(guān)系,以實(shí)現(xiàn)良好的解耦。
關(guān)系圖:

基于maven創(chuàng)建的一個(gè)springmvc工程。
1.創(chuàng)建maven項(xiàng)目中使用到了自動(dòng)創(chuàng)建骨架
選擇webapp,這樣就會(huì)自動(dòng)生成springmvc項(xiàng)目的一些基本文件。

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

3.添加jar包**
springmvc項(xiàng)目需要兩個(gè)依賴 一個(gè)是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項(xiàng)目web.xml初始化配置中央調(diào)度器以及自定義springmvc.xml文件
在tomcat啟動(dòng)的時(shí)候,一般會(huì)加載web.xml里面配置, 因?yàn)镈ispatcherServelt是調(diào)度器,負(fù)責(zé)調(diào)度用戶的請(qǐng)求到相應(yīng)的servlet處理,DispatcherServlet創(chuàng)建的時(shí)候,同時(shí)也會(huì)創(chuàng)建springmvc容器,那么tomcat啟動(dòng)之后,其他ervlet就可以使用了。
web.xml:
- 中央調(diào)度器dipathcerServlet配置創(chuàng)建 同時(shí)創(chuàng)建spingmvc配置
- spring監(jiān)聽(tīng)器配置
- 字符集過(guò)濾器配置
<?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">
<!--這個(gè)web-app版本低了還會(huì)有問(wèn)題-->
<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會(huì)被中央調(diào)度器處理轉(zhuǎn)發(fā)-->
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--2.注冊(cè)spring的監(jiān)聽(tīng)器 自定義配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<!--spring監(jiān)聽(tīng)器依賴-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--3.post請(qǐng)求亂碼解決 字符集過(guò)濾器-->
<!-- -->
<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格式數(shù)據(jù)轉(zhuǎn)換 注解驅(qū)動(dòng)-->
<mvc:annotation-driven/>
<!--視圖解析器InternalResourceViewResolver,幫助開(kāi)發(fā)人員設(shè)置視圖文件的路徑-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/> <!--設(shè)置前綴 value指的是路徑-->
<!-- <property name="suffix" value=".jsp"/> 這是后綴-->
</bean>
<!--tomcat處理靜態(tài)資源的默認(rèn)servlet處理器-->
<mvc:default-servlet-handler/>
<!--手動(dòng)配置的靜態(tài)資源處理-->
<mvc:resources mapping="/static/picture/*" location="/static/picture/"/>
</beans>到此這篇關(guān)于SpringMVC核心之中央調(diào)度器DispatcherServlet的文章就介紹到這了,更多相關(guān)SpringMVC中央調(diào)度器DispatcherServlet內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MAC?在類路徑或引導(dǎo)類路徑中找不到程序包?java.lang問(wèn)題
這篇文章主要介紹了MAC?在類路徑或引導(dǎo)類路徑中找不到程序包?java.lang問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Spring如何在一個(gè)事務(wù)中開(kāi)啟另一個(gè)事務(wù)
這篇文章主要介紹了Spring如何在一個(gè)事務(wù)中開(kāi)啟另一個(gè)事務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
java Class文件結(jié)構(gòu)解析常量池字節(jié)碼
這篇文章主要為大家介紹了java Class文件的整體結(jié)構(gòu)解析常量池字節(jié)碼詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Java并發(fā)工具之CountDownLatch使用詳解
這篇文章主要介紹了Java并發(fā)工具之CountDownLatch使用詳解,通過(guò)使用 CountDownLatch可以使當(dāng)前線程阻塞,等待其他線程完成給定任務(wù),可以類比旅游團(tuán)導(dǎo)游要等待所有的游客到齊后才能去下一個(gè)景點(diǎn),需要的朋友可以參考下2023-12-12
springboot中request和response的加解密實(shí)現(xiàn)代碼
這篇文章主要介紹了springboot中request和response的加解密實(shí)現(xiàn),在springboot中提供了RequestBodyAdviceAdapter和ResponseBodyAdvice,利用這兩個(gè)工具可以非常方便的對(duì)請(qǐng)求和響應(yīng)進(jìn)行預(yù)處理,需要的朋友可以參考下2022-06-06
idea中無(wú)法自動(dòng)裝配未找到 ‘XXXXXXX‘ 類型的 Bean
本文主要介紹了idea中無(wú)法自動(dòng)裝配未找到 ‘XXXXXXX‘ 類型的 Bean的原因及三種解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
springboot加載一個(gè)properties文件轉(zhuǎn)換為map方式
這篇文章主要介紹了springboot加載一個(gè)properties文件轉(zhuǎn)換為map方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

