Spring MVC1

晓乎發表於2024-11-26

MVC模式

MVC 是一種分層開發的模式(軟體架構思想),其中:

  • M:Model,業務模型,處理業務
  • V:View,檢視,介面展示
  • C:Controller,控制器,處理請求,呼叫模型和檢視

最典型的MVC就是JSP + servlet + javabean的模式,這裡使用此模式來說明,控制器(servlet)用來接收瀏覽器傳送過來的請求,控制器呼叫模型(JavaBean)來獲取資料,比如從資料庫查詢資料;控制器獲取到資料後再交由檢視(JSP)進行資料展示。

MVC 好處:

  • 職責單一,互不影響。每個角色做它自己的事,各司其職。
  • 有利於分工協作。
  • 有利於元件重用

三層架構

在Java EE開發中,系統經典的三層架構包括表現層、業務層和持久層。三層架構中,每一層各司其職,表現層(Web層)負責接收客戶端請求,並向客戶端響應結果;業務層(Service層)負責業務邏輯處理,和專案需求息息相關;持久層(Dao層)負責和資料庫互動,對資料庫表進行增刪改查。

Spring MVC

Spring MVC作用於三層架構中的表現層,用於接收客戶端的請求並進行響應。Spring MVC中包含了控制器和檢視,控制器接收到客戶端的請求後對請求資料進行解析和封裝,接著將請求交給業務層處理。業務層會對請求進行處理,最後將處理結果返回給表現層。表現層接收到業務層的處理結果後,再由檢視對處理結果進行渲染,渲染完成後響應給客戶端。

spring mvc提供了 前端控制器DispatcherServlet,僅針對對客戶端的請求和響應進行統一 處理(就是說封裝了servlet),是個框架 。原先的Controller在實現本身的作用外(接收請求和響應瀏覽器外), 還需要呼叫View和Controller層。耦合嚴重。

Spring MVC入門程式

透過一個簡單的入門程式演示Spring MVC的使用。該程式要求在瀏覽器發起請求,由Spring MVC接收請求並響應,具體實現步驟如下。

(1)建立工程,配置POM檔案

<packaging>war</packaging>

<dependencies> <!--Spring 核心類--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.8.RELEASE</version> </dependency> <!--Spring MVC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.8.RELEASE</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--JSP--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> </dependencies> <!--構建--> <build> <!--設定外掛--> <plugins> <!--具體的外掛配置--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <path>/chapter10</path> </configuration> </plugin> </plugins> </build>

(2)配置執行環境

在Run/Debug Configurations對話方塊中,單擊左上角的“+”按鈕,彈出Add New Configurations選單列表。

在Add New Configurations選單列表中,單擊左側選單中的“Maven”選項,進入Maven指令的配置介面。

(3)配置前端控制器

在專案的web.xml檔案中進行Spring MVC前端控制器的配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- 配置 Spring MVC 的前端控制器 -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <!-- 配置初始化引數,用於讀取 Spring MVC 的配置檔案 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 應用載入時建立-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


</web-app>

(4)配置處理器對映資訊和檢視解析器

建立Spring MVC的配置檔案spring-mvc.xml,用於配置處理器對映資訊和檢視解析器。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       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">
    <!-- 配置 Spring MVC 要掃描的包 -->
    <context:component-scan base-package="controller"/>
    <!-- 配置檢視解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

(5)建立處理器

建立處理器FirstController類,用於處理客戶端的請求並指定響應時轉跳的頁面。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

//設定當前類為處理器類
@Controller
public class FirstController {
    //設定當前方法的訪問對映地址
    @RequestMapping("/firstController")
    //設定當前方法返回值型別為 String,用於指定請求完成後跳轉的頁面
    public String sayHello() {
        System.out.println("訪問到 FirstController!");
        //設定具體跳轉的頁面
        return "success";
    }
}

(6)建立檢視(View)頁面  

 建立名稱為page的資料夾,並在page資料夾下建立名稱為success的jsp檔案,用於對客戶端請求進行處理後的檢視展示。

<html>
<body>
<h2>Spring MVC FirstController!</h2>
</body>
</html>
(7)啟動專案,測試應用
 

專案啟動成功後,在瀏覽器中對處理器進行請求訪問,訪問地址為http://localhost:8080/test/firstController,訪問後,IDEA控制檯列印資訊“訪問到FirstController!”,並且瀏覽器跳轉到success.jsp頁面中,頁面內容如下所示。

相關文章