Spring MVC——專案的開發流程
建立專案(IDEA下)
開啟IDEA,我們開始建立一個簡單的Spring MVC專案,流程如下:
這裡要注意一下,我們是基於Maven開發專案,當然是要配置Maven環境的,如果大家之前從來沒有配置過Maven,專案建立完成後需要配置一下,否則Maven無法自動為我們匯入依賴。
建立完成之後是這樣子如下圖所示,左邊是專案結構,右邊是自動開啟的Maven的pom.xml依賴配置檔案。
專案中的檔案目錄如果大家有所疑問可以參考這篇文章,在這我就不做過多闡述了。
匯入依賴
接下來要匯入Spring MVC專案的依賴了:
① Spring MVC有一個核心依賴。
② 我們建立的是一個web專案,因此還需要匯入web相關的依賴。
因為這個專案比較簡單,沒有複雜的功能,所以我們匯入上面兩個依賴就好了,在後續的開發中,我們可以根據需要匯入其他依賴項,如:json處理依賴、驗證碼元件依賴、檔案上傳依賴等。
我們只需在pom.xml檔案的project標籤中加入如下配置就好了:
<dependencies> <!--1.Spring MVC核心依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.6.RELEASE</version> </dependency> <!-- 2.web相關依賴--> <dependency> <!-- jstl 支援 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <!-- servlet編譯環境 --> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <!-- jsp編譯環境 --> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies>
web應用配置
war包配置
這是一個web專案,在專案開發完成後可以部署到伺服器上,如何部署呢?我們可以把專案打包成一個war包,然後部署。因此,我們需要在pom.xml中配置一下,將如下資訊加入到pom.xml的project標籤內:
<packaging>war</packaging>
一般放到這個位置:
建立web目錄
在main目錄下建立webapp資料夾,然後在webapp資料夾內建立WEB-INF資料夾,結果如下:
webapp目錄就是我們的web目錄,裡面存放動態、靜態資源和配置檔案,如jsp檔案、js檔案、css檔案、HTML檔案等。
WEB-INF目錄下只有一個檔案,就是我們的web配置檔案:web.xml。
生成web.xml
接下來,我們要生成我們的web.xml配置檔案。我們讓IDEA自動給我們生成,會自動生成頂部配置,這樣我們就不用自己寫了,步驟如下:
下一步, 糾正web.xml的生成位置:
然後依次點選OK、OK,web.xml就生成了,效果如下:
前端控制器
前端控制器是Spring MVC的核心,也稱核心控制器。
前端控制器的作用
1. 前端,負責接受所有請求。
2. 載入mvc.xml,啟動Spring MVC工廠。
3. Spring MVC流程排程。
下來我們來配置一下前端控制器,在剛生成的web.xml檔案的web-app標籤中加入我們的前端控制器,配置如下:
<!--Spring MVC的前端(核心)控制器--> <servlet> <servlet-name>mvc.ss</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--可選配置--> <!--servlet預設是懶漢式載入的,此配置設定其為餓漢式載入--> <load-on-startup>1</load-on-startup> </servlet> <!--設定接收所有請求--> <servlet-mapping> <servlet-name>mvc.ss</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
後端控制器
建立後端控制器
前端控制器接受的請求,會根據url委派制相應的後端控制器去處理,然後將結果返回至前端控制器,然後前端控制器再進一步委派。所以後端控制器就是處理我們請求的,它實際是一個類,類中有許多的方法,對應一個一個的url訪問路徑,讓我們來配置一下它吧。
在java目錄下建立包:com.ss.web,然後在包中建立控制器類:HelloController.java。
配置後端控制器
現在的HelloController.java還不是一個真正的後端控制器,因為我們還沒有配置,我們做如下配置:
package com.ss.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller // 宣告控制器 @RequestMapping("/home") // 主路徑 public class HelloController { @RequestMapping("/hello") // 從路徑,對應:/home/hello public String hello(){ System.out.println("業務一執行"); return "hello"; } @RequestMapping("/goods") // 從路徑,對應:/home/goods public String login(){ System.out.println("業務二執行"); return "goods"; } }
這就是一個後端控制器了,這裡需要說明兩點:
① 此時的後端控制器並沒有作用,因為我們沒有配置註解相關的資訊,註解是失效的,在後面我們會配置。
② return語句會跳轉到相應的頁面,如 return "hello"; 這句的作用是跳轉到名為hello的頁面,此時也是失效的,因為我們還沒有配置檢視解析器,下面我們會配置一下。
既然要跳轉頁面,我們當然需要寫一下相應的頁面。
在webapp目錄建立兩個檔案:hello.jsp 和 goods.jsp。
hello.jsp 內容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>hello</title> </head> <body> 道友好! </body> </html>
goods.jsp 內容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>goods</title> </head> <body> 商品頁面 </body> </html>
Spring MVC配置檔案
mvc.xml是Spring MVC專案的配置檔案,我們要先建立mvc.xml,然後在裡面配置我們的註解掃描、註解驅動、檢視解析器等配置資訊。
mvc.xml配置如下:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--註解掃描--> <context:component-scan base-package="com.ss.web"/> <!--註解驅動--> <mvc:annotation-driven></mvc:annotation-driven> <!--檢視解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--字首--> <property name="prefix" value="/"></property> <!--字尾--> <property name="suffix" value=".jsp"></property> </bean> </beans>
此時,我們的後端控制器才正式生效,因為我們配置了註解掃描和註解驅動,註解才會有效;配置了檢視管理器,才能把return語句返回的字串拼接成一個頁面的url,進一步完成跳轉的功能。
註冊mvc.xml
我們寫好Spring MVC配置檔案後,還需去載入它。還記得前端控制器的作用嗎?有一個作用就是載入mvc.xml配置檔案,啟動Spring MVC工廠,我們在上面並沒有配置它,接下來我們配置一下:
我們要在前端控制器內註冊我們的mvc.xml配置檔案,配置如下:
<!--Spring MVC的前端(核心)控制器--> <servlet> <servlet-name>mvc.ss</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--啟動SpringMVC工廠,載入mvc.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc.xml</param-value> </init-param> <!--可選配置--> <!--servlet預設是懶漢式載入的,此配置設定其為餓漢式載入--> <load-on-startup>1</load-on-startup> </servlet>
配置好後,專案啟動後,前端控制器啟動後就會載入我們的mvc.xml配置檔案了。
配置tomcat
接下來,我們要配置我們的web伺服器了,步驟如下:
好了,到此為止,tomcat配置完成。
啟動專案、測試
我們專案已經搭建完畢了,我們來測試一下吧。
啟動專案,然後在瀏覽器訪問一下:
回車後結果如下,成功訪問:
再測試一下另一個,輸入:
結果如下,也是成功訪問:
好了,一個簡單的Spring MVC專案搭建完畢,如果有時間的話,我會繼續深入的來完善這個Spring MVC專案,增加一下其他功能,如引數傳遞、json處理、攔截器、異常捕獲器、驗證碼等,和大家分享一下學習的過程。
感謝道友的閱讀,如有不足之處,還望不吝賜教