阿里技術專家深入講解,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核心知識點總結!