Spring MVC——項目的開發流程
- 2020 年 11 月 23 日
- 筆記
- Java SSM框架
創建項目(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="//www.springframework.org/schema/beans"
xmlns:context="//www.springframework.org/schema/context"
xmlns:mvc="//www.springframework.org/schema/mvc"
xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="//www.springframework.org/schema/beans
//www.springframework.org/schema/beans/spring-beans.xsd
//www.springframework.org/schema/context
//www.springframework.org/schema/context/spring-context.xsd
//www.springframework.org/schema/mvc
//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處理、攔截器、異常捕獲器、驗證碼等,和大家分享一下學習的過程。
感謝道友的閱讀,如有不足之處,還望不吝賜教!☺