深入理解SpringMVC中央調(diào)度器DispatcherServlet
springMVC是spring的一個模塊,專門做web的。
SpringMVC請求處理過程:
請求發(fā)送,根據(jù)url-pattern,轉(zhuǎn)發(fā)發(fā)送給中央調(diào)度器DispatcherServlet,中央調(diào)度器分配請求到自定義的Controller對象上,進行處理。
核心的就是中央調(diào)度器,所以我們在web.xml文件中要初始化配置中央調(diào)度器,中央調(diào)度器創(chuàng)建的同時,他會同時創(chuàng)建IOC springMVC IOC容器,用于管理對象的。 springmvc存放controller對象 view視圖對象
如下是詳情圖:
HandlerMapping處理映射,作用是根據(jù)請求的url與controller里面的方法的@RequestMapping("/url") 的url比較 找到相應(yīng)的Handler(方法)。
再詳細版:
SrpingMVC容器和spring IOC容器關(guān)系
springmvc ioc容器是spring ioc容器的子容器。 SpringMVC的IOC容器中的bean可以來引用 Spring IOC 容器中的 bean. 返回來呢 ? 反之則不行. Spring IOC 容器中的 bean 卻不能來引用 SpringMVC IOC 容器中的 bean!多個 Spring IOC 容器之間可以設(shè)置為父子關(guān)系,以實現(xiàn)良好的解耦。
關(guān)系圖:
基于maven創(chuàng)建的一個springmvc工程。
1.創(chuàng)建maven項目中使用到了自動創(chuàng)建骨架
選擇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初始化配置中央調(diào)度器以及自定義springmvc.xml文件
在tomcat啟動的時候,一般會加載web.xml里面配置, 因為DispatcherServelt是調(diào)度器,負責(zé)調(diào)度用戶的請求到相應(yīng)的servlet處理,DispatcherServlet創(chuàng)建的時候,同時也會創(chuàng)建springmvc容器,那么tomcat啟動之后,其他ervlet就可以使用了。
web.xml:
- 中央調(diào)度器dipathcerServlet配置創(chuàng)建 同時創(chuàng)建spingmvc配置
- spring監(jiān)聽器配置
- 字符集過濾器配置
<?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會被中央調(diào)度器處理轉(zhuǎn)發(fā)--> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--2.注冊spring的監(jiān)聽器 自定義配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!--spring監(jiān)聽器依賴--> <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格式數(shù)據(jù)轉(zhuǎn)換 注解驅(qū)動--> <mvc:annotation-driven/> <!--視圖解析器InternalResourceViewResolver,幫助開發(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)資源的默認servlet處理器--> <mvc:default-servlet-handler/> <!--手動配置的靜態(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring?mybatis環(huán)境常量與枚舉轉(zhuǎn)換示例詳解
這篇文章主要為大家介紹了spring?mybatis環(huán)境常量與枚舉轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06solr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測試用)
下面小編就為大家?guī)硪黄猻olr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測試用)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09Sax解析xml_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Sax解析xml,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08Java?synchronized關(guān)鍵字性能考量及優(yōu)化探索
這篇文章主要為大家介紹了Java?synchronized關(guān)鍵字性能考量及優(yōu)化探索示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12如何把spring boot應(yīng)用發(fā)布到Harbor
這篇文章主要介紹了如何把spring boot應(yīng)用發(fā)布到Harbor,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11Spring?session?redis?修改默認的序列化方法(案例)
這篇文章主要介紹了Spring?session?redis?修改默認的序列化方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04