1. 程式人生 > 實用技巧 >阿里技術專家深入講解,SpringMVC入門到進階,看這一篇就夠了

阿里技術專家深入講解,SpringMVC入門到進階,看這一篇就夠了

前言

SpringMVC是一個實現了Web MVC設計模式的輕量級Web框架。它與前輩Struts 2框架一樣,都屬於MVC框架,因為其使用和效能等方面比Struts 2更加優異,所以Spring MVC是現在比較主流的MVC框架。

先簡單概括一下SpringMVC的主要特點:

靈活性強,容易與其他框架整合;提供了前端控制器DispatcherServlet;支援多種檢視技術,如JSP、FreeMarker等檢視技術;支援國際化;

And So On…

接下來,開始寫我們的第一個Spring MVC應用。

開發工具

intelliJ IDEA (版本2020.2.2)與瀏覽器

建立專案

步驟1:開啟IDEA,新建專案(New Project)。

步驟2:選擇Maven,按預設的來,直接點選右下角Next。接著輸入專案名,按預設的來,直接點選右下角Next。

步驟3:建立完Maven專案後,點選專案名右鍵,選擇新增框架支援(Add Framework Support…)

步驟4:勾選Web Application(4.0),點選Next。

步驟5:完成以上步驟,最終的專案結構如下:

引入依賴Jar包

在pom.xml中,匯入Maven依賴Jar包,如下:

<dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
    </dependencies>

提示:匯入依賴Jar包後,需要點選右側的Maven,然後重新整理一下才能生效。具體如下:

檢視依賴Jar包是否匯入成功:

配置前端控制器

在web.xml中,配置SpringMVC的前端控制器DispatcherServlet。

在此之前,需要在src/main/resources目錄下新建springmvc-config.xml檔案。

web.xml,如下:

<?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">

    <servlet>
        <!-- 配置前端過濾器 -->
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 初始化載入配置檔案 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
        <!-- 表示容器在啟動時立即載入Servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

提示:<servlet-mapping>中,通過<url-pattern>元素的/,會將所有的URL攔截,並交由DispatcherServlet處理。

建立Controller類

在src/main/java目錄下,新建一個com.study.controller包,並在包中建立控制器類HelloController,需要實現Controller介面。

提示:實現的Controller介面必須是org.springframework.web.servlet.mvc包下的才可以。

在重寫Controller介面中的handleRequest方法時,可能會出現如下報錯:

解決辦法:

在pom.xml中,匯入所需的依賴Jar包,如下:

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

HelloController.java如下:

package com.study.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
        //建立ModelAndView物件
        ModelAndView mav = new ModelAndView();
        //向模型物件中新增資料
        mav.addObject("msg","這是我的第一個SpringMVC程式");
        //設定邏輯檢視名
        mav.setViewName("/WEB-INF/jsp/hello.jsp");
        //返回ModelAndView物件
        return mav;
    }
}

本案例中,向模型物件中添加了一個名稱為msg的字串物件,並設定返回的邏輯檢視路徑為/WEB-INF/jsp/hello.jsp,這樣,請求就會被轉發到hello.jsp頁面。

建立檢視頁面

在WEB-INF目錄下,新建一個jsp資料夾,並在資料夾中新建一個hello.jsp頁面檔案,然後在該頁面使用EL表示式獲取msg中的資訊。

hello.jsp,如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${msg}
</body>
</html>

建立Spring MVC的配置檔案,配置控制器對映資訊

在第四步中,我們已經在src/main/resources目錄下新建了一個springmvc-config.xml檔案。接下來,我們需要配置控制器對映資訊。

springmvc-config.xml,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置處理器Handle,對映"/helloController"請求 -->
    <bean name="/helloController" class="com.study.controller.HelloController" />
    <!-- 處理器對映器,將處理Handle的name作為url進行查詢 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!-- 處理器介面卡,配置對處理器中handleRequest()方法的呼叫 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!-- 檢視解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
</beans>

啟動專案,測試應用

需要配置Tomcat來啟動專案,具體步驟如下:

步驟1:點選上方Add Configureation…

步驟2:點選左上方+,選擇Tomcat Server下的Local。

步驟3:點選右下角的Fix。修改Application context為/,接著點選Apply->OK。

完成以上步驟,就可以開始執行專案。

開啟瀏覽器訪問http://localhost:8080/helloController

結果如下:

訪問後,有可能會出現404、資源未公開等報錯資訊。

解決辦法:

步驟1:點選右上角的Project Structure…

步驟2:點選Artifacts->WEB-INF->右鍵,新建一個lib目錄。

步驟3:再進行如下操作。

提示:完成以上步驟,記得點選Apply->OK。

再重新啟動Tomcat,訪問http://localhost:8080/helloController即可。

瀏覽器中顯示出了模型物件中的字串資訊,就說明這個超級簡單的Spring MVC程式執行成功。

總結

以上是我分享給大家的關於SpringMVC快速入門程式的一些總結。如果覺得還不錯的話,就送我一個贊吧!如果本文對你有用的話,也歡迎收藏哦!

最後

歡迎關注公眾號:前程有光,領取一線大廠Java面試題總結+各知識點學習思維導+一份300頁pdf文件的Java核心知識點總結!