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學習筆記之Spring MVC 入門教程Spring筆記MVC
- spring mvc 快速入門SpringMVC
- Spring MVC 入門程式SpringMVC
- Spring MVC入門書目錄SpringMVC
- 第二章 Spring MVC入門SpringMVC
- 跟開濤學Spring MVC:第二章 Spring MVC入門SpringMVC
- Spring Boot 2.0 WebFlux 教程 (一) | 入門篇Spring BootWebUX
- Spring Boot教程(一)(快樂入門)(上)Spring Boot
- Spring Boot 2.0.1 入門教程Spring Boot
- .NET輕量級MVC框架:Nancy入門教程(一)——初識NancyMVC框架NaN
- MVC5+EF6 入門完整教程九MVC
- MVC5+EF6 入門完整教程八MVC
- MVC5+EF6 入門完整教程四MVC
- MVC5 + EF6 入門完整教程MVC
- MVC5+EF6 入門完整教程五MVC
- MVC5+EF6 入門完整教程六MVC
- MVC5+EF6 入門完整教程七MVC
- MVC5+EF6 入門完整教程十MVC
- Spring入門學習手冊 5:Spring MVC的一個Hello world!例子SpringMVC
- Spring MVC 入門指南(十三):獲取Cookie值SpringMVCCookie
- 史上最簡單的 Spring MVC 教程(一)SpringMVC
- MVC5 + EF6 入門完整教程二MVC
- MVC5 + EF6 完整入門教程三MVC
- Spring Boot 整合 Spring Security 入門案例教程Spring Boot
- Scala入門教程 (一)
- Kafka教程(一)Kafka入門教程Kafka
- Spring Security(一)入門Spring
- Docker(一):Docker入門教程Docker
- ASP.NET Core 入門教程 5、ASP.NET Core MVC 檢視傳值入門ASP.NETMVC
- Log4J入門教程(一) 入門例程
- Spring入門配置(一) - IOCSpring
- Spring Boot (一)快速入門Spring Boot
- Spring Boot(一):入門篇Spring Boot
- Spring MVC教程——檢視閱讀SpringMVC
- Spring入門(一):建立Spring專案Spring
- Spring入門學習手冊 6:Spring MVC基礎中的基礎SpringMVC
- .NET輕量級MVC框架:Nancy入門教程(二)——Nancy和MVC的簡單對比MVC框架NaN