項目:primary
完成功能:用戶提交一個請求,服務端處理器在接收到這個請求后,給出一條歡迎信息,在響應頁面中顯示該信息。
在創建好 web 項目后,首先要導入 Jar 包。SpringMVC 需要的基本 Jar 包,是在原 Spring的 Jar 包基礎上(四個核心 jar, 日志 jar,spring-aop.jar,spring-web.jar),增加 springmvc 框架的實現包:spring-webmvc.jar
該中央調度器為一個 Servlet,名稱為 DispatcherServlet。中央調度器的全限定性類名在導入的 Jar 文件 spring-webmvc-4.3.9.RELEASE.jar 的第一個包 org.springframework.web.servlet下可找到。
在<servlet/>中添加<Load-on-startup/>的作用是,,標記是否在Web服務器(這里是Tomcat) 啟動時會創建這個 Servlet 實例,即是否在 Web 服務器啟動時調用執行該 Servlet 的 init()方法,而不是在真正訪問時才創建。它的值必須是一個整數。
● 當值大于等于 0 時,表示容器在啟動時就加載并初始化這個 servlet,數值越小,該 Servlet的優先級就越高,其被創建的也就越早;
● 當值小于 0 或者沒有指定時,則表示該 Servlet 在真正被使用時才會去創建。
● 當值相同時,容器會自己選擇創建順序。
對于<url-pattern/>,可以寫為 / ,建議寫為*.do 的形式。詳見 1.4 再解<url-pattern/>。
注冊完畢后,可直接在服務器上發布運行。此時,默認瀏覽器頁面,及 MyEclipse 控制臺均會拋出 FileNotFoundException 異常。即默認要從項目根下的 WEB-INF 目錄下找名稱為Servlet 名稱-servlet.xml 的配置文件。這里的“Servlet 名稱”指的是注冊中央調度器時 標簽中指定的 Servlet 的 name 值。本例配置文件名為 springmvc-servlet.xml。
從 DispatcherServlet 類的父類的源碼注釋 FrameworkServlet 中也可看到相關描述:
而一般情況下,該配置文件是放在類路徑下,即 src 目錄下。所以,在注冊中央調度器時,還需要為中央調度器設置查找 SpringMVC 配置文件路徑,及文件名。
打開 DispatcherServlet 的源碼,其繼承自 FrameworkServlet,而該類中有一個屬性contextConfigLocation,用于設置 SpringMVC 配置文件的路徑及文件名。該初始化參數的屬性就來自于這里。
在工程的類路徑即 src 目錄下創建 SpringMVC 的配置文件 springmvc.xml。該文件名可以任意命名。而該 xml 文件的約束,則使用 Spring 配置文件最全約束。
該處理器需要實現 Controller 接口。
ModelAndView 類中的 addObject()方法用于向其 Model 中添加數據。Model 的底層為一個 HashMap。
Model 中的數據存儲在 request 作用域中,SringMVC 默認采用轉發的方式跳轉到視圖,本次請求結束,模型中的數據被銷毀。
在 springmvc.xml 中注冊處理器。不過,需要注意處理器的 id 屬性值為一個請求 URI。表示當客戶端提交該請求時,會訪問 class 指定的這個處理器。
在 WEB-INF 目錄下新建一個子目錄 jsp,在其中新建一個 jsp 頁面 show.jsp。
SpringMVC 框架為了避免對于請求資源路徑與擴展名上的冗余,在視圖解析器 InternalResouceViewResolver 中引入了請求的前輟與后輟。而 ModelAndView 中只需給出要跳轉頁面的文件名即可,對于具體的文件路徑與文件擴展名,視圖解析器會自動完成拼接。