1. 程式人生 > >什麼是SpringMVC?(二)詳細介紹

什麼是SpringMVC?(二)詳細介紹

什麼是SpringMVC?(一)中只是最簡單快速的用起來,很多細節沒有寫出來,接下來詳細介紹

一、詳細工作流程

1)使用者發出請求

2)web.xml中配置的springmvc核心控制器負責攔截請求,符合的放行。並載入<servlet-name>的值-servlet.xml

3)被放行的請求來到對映器(對映器主要是跟我我們在瀏覽器上輸入的url來對映對應的Handle,具體的對映規則需要根據使用哪一個對映器來決定)

4)然後來到介面卡(介面卡主要是決定呼叫哪個Handler來實現具體的業務邏輯)

5)來到具體action實現類,處理業務邏輯

6)來到檢視解析器(解析檢視邏輯名對應的真實路徑。真實路徑不用配置,邏輯路徑需要配置。)

7)響應

二、自定義springmvc配置檔案

在預設情況下:springmvc框架的配置檔案必須叫<servlet-name>-servlet.xml,且必須放在/WEB-INF/目錄下,我們可以在web.xml檔案中,為DispatcherServlet配置一個初始化引數,讓它去我們指定的目錄下載入springmvc.xml配置檔案。比如放在src目錄下,那麼web.xml應該如下:

    <!-- 註冊springmvc框架核心控制器 -->
	<servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring.xml</param-value>	
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>

三、日期轉換器和編碼過濾器

  1. 在預設情況下,springmvc不能將String型別轉成Date型別,必須自定義型別轉換器
public class AdminAction extends AbstractCommandController{
	@Override
	protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
		binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
	}

2)spring提供的,專用於解決POST提交中文亂碼問題,需要在web.xml檔案中配置

    <!-- 編碼過濾器 -->
	<filter>
		<filter-name>CharacterEncodingFilter</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>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>