1. 程式人生 > >Spring MVC——專案的開發流程

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

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