史上最簡單的 Spring MVC 教程(一)
1 簡介
Spring MVC 屬於 SpringFrameWork 的後續產品,已經融合在 Spring Web Flow 裡面。Spring 框架提供了構建 Web 應用程式的全功能 MVC 模組,而 Spring MVC 就是其中最優秀的 MVC 框架。自從 Spring 2.5 版本釋出後,由於支援註解配置,易用性得到了大幅度的提高;Spring 3.0 更加完善,實現了對 Struts 2 的超越。從現階段來看,Spring MVC 是當前應用最多的 MVC 框架,而且在很多公司,通常會把 Spring MVC 和 Mybatis 整合起來使用。
2 框架原理
在Spring MVC框架中,從“Request(請求)”開始,依次進入“DispatcherServlet(核心分發器)” —> “HandlerMapping(處理器對映)” —> “Controller(控制器)” —> “ModelAndView(模型和檢視)” —> “ViewResolver(檢視解析器)” —> “View(檢視)” —> “Response(響應)”結束,其中DispatcherServlet、HandlerMapping和ViewResolver 只需要在XML檔案中配置即可,從而大大提高了開發的效率,特別是對於 HandlerMapping 框架為其提供了預設的配置。Spring MVC 框架的結構圖如下所示:
3 搭建 Spring MVC 框架
首先,我們需要下載 Spring MVC 框架的各種依賴包,下載地址為:Spring MVC框架的各種依賴包;然後,建立 Java Web 專案,專案名隨意取,在這裡,我們們就不妨取為“springmvc”,構建專案結構圖如下:
在“WEB-INF”目錄下,建立“lib”目錄,匯入 Spring MVC 框架的相關依賴包,同時,在“External Libraries”中也匯入相同的 jar 包,其中對於“lib”目錄,我們直接把 jar 包複製過來就可以;但是對於“External Libraries”,我們就得通過“Project Structure”進行匯入啦,具體 jar 包的匯入方法可以參考:詳述 IntelliJ IDEA 之 新增 jar 包。至於需要匯入的 jar 包,在我們先前下載的“Spring MVC框架的各種依賴包”中都可以找到,下面附上需要匯入的 jar 名稱:
spring-aop-3.2.2.jar AOP
spring-aspects-3.2.2.jar AOP
spring-beans-3.2.2.jar 核心包
spring-context-3.2.2.jar 擴充套件包
spring-context-support-3.2.2.jar 對擴充套件包支援
spring-core-3.2.2.jar 核心包
spring-expression-3.2.2.jar spring 表示式
spring-web-3.2.2.jar web b/s
spring-webmvc-3.2.2.jar springmvc
com.springsource.org.aopalliance-1.0.0.jar AOP
com.springsource.org.apache.commons.logging-1.1.1.jar 通用日誌
接下來,依次建立控制器Controller(即Java類):
package spring.mvc.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
/** * Created by 維C果糖 on 2017/1/24. */
public class CeshiController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws Exception {
System.out.println(request.getRequestURI()); // 獲取Controller的名稱,即地址
return new ModelAndView("index"); // 邏輯名
}
}
配置 web.xml 檔案,主要是配置 DispatcherServlet,即核心分發器:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 配置 DispatcherServlet,對所有字尾為action的url進行過濾 -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
編輯 JSP 頁面,用於顯示,在這裡需要將該 JSP 頁面複製到 pages 目錄一份,稍後會用到:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Spring MVC</title>
</head>
<body>
This is my Spring MVC of web!
</body>
</html>
建立 action-servlet.xml 檔案,主要是宣告 Controller 和配置 ViewResolver,即控制器和檢視解析器:
<?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 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- 宣告 Controller -->
<bean name="/home.action" class="spring.mvc.controller.CeshiController" />
<!-- 內部資源檢視解析器,字首 + 邏輯名 + 字尾 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
操作完以上步驟後,我們們就已經初步搭建了 Spring MVC 框架,接下來,再配置一下 web 伺服器就可以成功執行啦!在這裡,作者用的 web 伺服器是 tomcat,配置完的結果如下所示:
其中,標號1,為tomcat伺服器的名稱,可以隨意取名;標號2,為web伺服器預設啟動的瀏覽器;標號3,為訪問路徑;標號4,為虛擬機器引數配置,在此沒有進行配置,即採用了預設的配置;標號5,為Java執行環境配置;標號6,為埠號配置;標號7,為部署tomcat伺服器,點選進入後,配置如下:
至此,Spring MVC 框架搭建成功,執行程式後,將在 Chrome 瀏覽器顯示如下內容:
溫馨提示:在此專案中,由於使用的是 IntelliJ IDEA ,因此不用我們們自己建立lib包,直接將jar包導到External Libraries中即可。
相關文章
- 史上最簡單的Spring Security教程(三十六):RememberMeAuthenticationFilter詳解SpringREMFilter
- 最新最全的史上最簡單的IDEA破解教程(破解到2100年)Idea
- Centos7安裝mysql5.7.27 史上最全最簡單的教程CentOSMySql
- 史上最簡單的 SpringCloud 教程 | 第四篇: 斷路器(Hystrix)SpringGCCloud
- 史上最簡單的 SpringCloud 教程 | 第五篇: 路由閘道器 (zuul)SpringGCCloud路由Zuul
- 史上最簡單的推薦系統設計
- 帶你一步一步手寫一個簡單的Spring MVCSpringMVC
- 史上最簡單MySQL教程詳解(基礎篇)之多表聯合查詢MySql
- 最簡單的SpringBoot整合MyBatis教程Spring BootMyBatis
- Spring MVC 簡述SpringMVC
- spring mvc(註解)上傳檔案的簡單例子SpringMVC單例
- 史上最簡單的SpringCloud教程 | 第十二篇: 斷路器監控(Hystrix Dashboard)(Finchley版本)SpringGCCloud
- 轉載:史上最簡單的 SpringCloud 教程 | 第一篇: 服務的註冊與發現Eureka(Finchley版本)SpringGCCloud
- Spring MVC 到 Spring Boot 的簡化之路MVCSpring Boot
- iRingg:史上最簡單、好用的 macOS 鈴聲製作軟體Mac
- 手寫Spring MVC框架(一) 實現簡易版mvc框架SpringMVC框架
- 用 go 實現一個簡單的 mvcGoMVC
- 史上最簡單的排序演算法?看起來卻滿是bug排序演算法
- 名片識別,史上最簡單的整合攻略來啦!附有SDK包
- 最簡單的dockerfile使用教程 - 建立一個支援SSL的Nginx映象DockerNginx
- 手把手教你手寫一個最簡單的 Spring Boot StarterSpring Boot
- Spring Boot+Spring Security+Thymeleaf 簡單教程Spring Boot
- Servlet 到 Spring MVC 的簡化之路ServletSpringMVC
- 轉載:史上最簡單的SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)(Finchley版本)SpringGCCloudREST
- 史上最簡單的 《三角形判定》 面試題答案面試題
- 史上最強Tableau Server 安裝教程Server
- 一個最簡單的web componentsWeb
- Spring MVC教程——檢視閱讀SpringMVC
- Shiro和Spring MVC、Mybatis整合教程SpringMVCMyBatis
- 模式系統與最簡單的Node.js MVC Web Server設計模式Node.jsMVCWebServer
- Spring Boot 最簡單整合 Shiro+JWT 方式Spring BootJWT
- [教程]一份簡單易懂的 TensorFlow 教程
- Kubernetes與Spring Boot簡單HelloWorld教程 - MarounSpring Boot
- 史上最簡單的人臉識別專案登上GitHub趨勢榜Github
- 一個最簡單的 Github workflow 例子Github
- 驚呆了,Servlet Filter和Spring MVC Interceptor的實現居然這麼簡單ServletFilterSpringMVC
- 手寫一個最簡單的IOC容器,從而瞭解spring的核心原理Spring
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- 用最簡單的方式訓練史上最強ResNet-50,效能超過魔改結構的ResNeSt