什麼是SpringMVC?(二)詳細介紹
阿新 • • 發佈:2018-12-17
什麼是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>
三、日期轉換器和編碼過濾器
- 在預設情況下,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>