建立專案(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處理、攔截器、異常捕獲器、驗證碼等,和大家分享一下學習的過程。
感謝道友的閱讀,如有不足之處,還望不吝賜教!☺