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="//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處理、攔截器、異常捕獲器、驗證碼等,和大家分享一下學習的過程。

  感謝道友的閱讀,如有不足之處,還望不吝賜教!☺