版權聲明:本文爲 小異常 原創文章,非商用自由轉載-保持署名-註明出處,謝謝!
本文網址:https://blog.csdn.net/sun8112133/article/details/104610179
文章目錄
本篇博客還是以一個衆所周知的 HelloWorld 小案例講起,幫助大家快速瞭解 Spring MVC 這個主流框架。
本套筆記使用的 IDE 工具是 STS(STS 這個軟件其實就是一款 Eclipse,它與其他 Eclipse 不同的是它能更好的支持 Spring。它相當於 Eclipse 與 STS插件 的二合一,也是 Spring 官方推薦使用的),關於 STS 的有關內容我之前也寫過類似博客,在這裏不作過多講述,感興趣的小夥伴可以參考:STS軟件安裝
Spring MVC 版本選用的是目前比較新的
5.1.7
。
一、Spring MVC 概述
在講 HelloWorld 這個小案例之前,先簡單說一下什麼是 Spring MVC。
Spring MVC 是 MVC 架構思想的實現,也是 Spring 中的一個組件,主要是用來 進行 WEB 開發的主流框架。
MVC 是由 Model(模型)、View(視圖) 和 Controller(控制器) 這三部分組成的,它的工作流程是由 Controller 接收客戶端請求,調用 Model 相關代碼完成業務邏輯操作,將結果返回給 Controller,Controller 再結合 View 完成業務數據的視圖渲染,並將結果響應給客戶端。
二、HelloWorld
1、準備工作
先創建一個 Web 工程,如果你使用的是 Maven,可以先創建一個 Maven 的 Web 工程(可以參考: 在 Eclipse 中構建 Web 工程),並引入 Maven 依賴;如果你創建的是普通的 Web 工程,則直接引入 Jar 包即可。
1)Maven 依賴
<dependencies>
<!-- Spring MVC 依賴 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<!-- Servlet 依賴 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
2)Jar 包
Jar包下載地址:https://pan.baidu.com/s/14E7sqp-jLB-q4arLvuD-jw,提取碼:ae2o
2、目錄結構
1)Maven 目錄結構
2)使用 Jar 包的目錄結構
3、配置前端控制器
前端控制器(DispatcherServlet) 是用來集中處理請求的,它負責接收所有的請求,再將對應的請求轉發到其他程序處理,然後再接收處理後的結果,最終將處理好的結果返回給瀏覽器。其實它就是一箇中央處理器,每次請求都需要經過它。
我們需要在
web.xml
中配置 DispatcherServlet,如下:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 統一交給 springmvc.xml 進行處理 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 接收所有的請求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
4、創建 Spring MVC 配置管理文件
Spring MVC 配置管理文件 主要是用來根據不同的請求轉發到對應的業務邏輯類去處理,並獲取處理後的結果返回給 前端控制器。
我們需要在
classpath
的根目錄下創建springmvc.xml
配置文件(可根據目錄結構進行創建),主要配置自動掃描註解 以及 視圖解析器,其內容如下:視圖解析器(ViewResolver) 的主要作用就是將邏輯視圖轉換成用戶可以看到的物理視圖。
<!-- 配置自動掃描 -->
<context:component-scan base-package="com.demo" />
<!-- 配置視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
5、控制器
控制器 主要作用是爲了可以根據不同的 URL 進行相應的業務邏輯處理。
我們需要在
com.demo
這個包下創建一個控制器,其中@RequestMapping("/hello")
這句話表示將來訪問/hello
這個URL時,就能執行index()
這個方法。內容如下:注意: 這裏只能加 @Controller 註解,不僅要將該類放到 IOC 容器中,更主要的是爲了可以處理瀏覽器的請求,如果加了其他配置 Bean 的註解(如:
@Component
等),那麼效果只能放到 IOC 容器中,並不能處理瀏覽器請求。
@Controller
public class HelloController {
@RequestMapping("/hello")
public String index() {
System.out.println("index...");
return "index";
}
}
6、準備 JSP 頁面(index.jsp)
<h1>Hello Spring MVC!</h1>
7、瀏覽器測試
用瀏覽器訪問
/hello
這個 URL,如果能轉發到index.jsp
頁面,表示測試成功!
三、可能會出現的問題
在做 HelloWorld 這個小例子可能會出現一些意想不到的問題,我在做 HelloWorld 這個小例子的時候,出現了下列問題,大家可以進行參考:
1、Maven 構建 Spring MVC 時報 ClassNotFoundException 異常
請參考:https://blog.csdn.net/sun8112133/article/details/104521255
2、項目報 Java 版本不匹配
請參考:https://blog.csdn.net/sun8112133/article/details/104521088