Spring MVC入門教程(一)
我們先來看下Spring Web MVC的DispatcherServlet處理請求的工作流,有個整體的印象。
DispatcherServlet繼承自HttpServlet,就像它的名字一樣,是一個“排程員”。一個HTTP請求到來時,DispatcherServlet根據URL分配到註冊的handlers處理。
配置DispatcherServlet
web.xml
<web-app>
<servlet>
<servlet-name>golfing</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>golfing</servlet-name>
<url-pattern>/golfing/*</url-pattern>
</servlet-mapping>
</web-app>
所有URL以/golfing開頭的請求都會被名字為golfing的DispatcherServlet處理。
配置其他Bean
有兩種方式,繼承context方式和根context方法。
繼承context方法
每個DispatcherServlet有自己的上下文物件WebApplicationContext(繼承了根WebApplicationContext物件中定義的所有bean)。繼承的bean可以在具體的Servlet例項中被過載。
Spring MVC會查詢WEB-INF目錄下查詢一個名為[servlet-name]-servlet.xml的配置檔案。
看一個例子。
<web-app>
<servlet>
<servlet-name>golfing</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>golfing</servlet-name>
<url-pattern>/golfing/*</url-pattern>
</servlet-mapping>
</web-app>
需要在/WEB-INF/路徑下建立一個golfing-servlet.xml檔案,如果需要多個Servlet,可以配置多個。
根context方法
只有一個WebApplicationContext物件,包含了所以的元件(components)。
通過在servlet初始化引數中配置一個空的contextConfigLocation來實現,看一個例子。
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</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>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
其中/WEB-INF/root-context.xml可以自定義名字和路徑。
WebApplicationContext中特殊型別bean
DispatcherServlet配置
DispatcherServlet包含有預設配,預設配置在org.springframework.web.servlet下的DispatcherServlet.properties檔案中。
# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
使用者也可以自己配置,覆蓋預設配置。
看一個例子。
<!-- 定義跳轉的檔案的前字尾 ,檢視模式配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 這裡的配置我的理解是自動給後面action的方法return的字串加上字首和字尾,變成一個 可用的url地址 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
相關文章
- Spring MVC 入門程式SpringMVC
- spring mvc 快速入門SpringMVC
- Spring Boot 2.0 WebFlux 教程 (一) | 入門篇Spring BootWebUX
- Spring入門學習手冊 5:Spring MVC的一個Hello world!例子SpringMVC
- Spring MVC 入門指南(十三):獲取Cookie值SpringMVCCookie
- Spring Boot 2.0.1 入門教程Spring Boot
- Spring Boot 整合 Spring Security 入門案例教程Spring Boot
- Spring Security(一)入門Spring
- Spring MVC教程——檢視閱讀SpringMVC
- Shiro和Spring MVC、Mybatis整合教程SpringMVCMyBatis
- Spring入門學習手冊 6:Spring MVC基礎中的基礎SpringMVC
- NSIS 入門教程 (一)
- Spring入門(一):建立Spring專案Spring
- ASP.NET + MVC5 入門完整教程三 (上) --- 第一個 MVC 專案_lingshuangcanxue-CSDN 部落格_asp.net mvcASP.NETMVCGC
- ASP.NET Core 入門教程 5、ASP.NET Core MVC 檢視傳值入門ASP.NETMVC
- Spring Boot (一)快速入門Spring Boot
- Spring入門配置(一) - IOCSpring
- Spring MVC與Bootstrap基礎教程 - josdemSpringMVCboot
- Spring Mvc原理分析(一)SpringMVC
- java spring mvc jsp excel 匯入JavaSpringMVCJSExcel
- Spring Boot系列(一):Spring Boot 入門篇Spring Boot
- Docker(一):Docker入門教程Docker
- 全網最詳細的Spring入門教程Spring
- Spring Cloud Gateway (一)入門篇SpringCloudGateway
- Spring Boot入門(一):搭建Spring Boot專案Spring Boot
- Mac新手的入門教程(一)Mac
- Spring 入門Spring
- Spring Boot 2.x基礎教程:快速入門Spring Boot
- Spring Boot -01- 快速入門篇(圖文教程)Spring Boot
- 深入學習Spring框架(一)- 入門Spring框架
- 一文入門 Spring Cloud TencentSpringCloud
- spring - mvcSpringMVC
- spring、spring MVC、spring BootMVCSpring Boot
- Spring boot入門(一):快速搭建Spring boot專案Spring Boot
- spring mvc專案配置一覽SpringMVC
- Spring:一篇文章總結 Spring MVCSpringMVC
- Spring Security系列之極速入門與實踐教程Spring
- MongoDB 入門教程系列之二:使用 Spring Boot 操作 MongoDBMongoDBSpring Boot
- 寫一本Flask入門教程Flask