史上最簡單的 Spring MVC 教程(一)

1 簡介


Spring MVC 屬于 SpringFrameWork 的后續(xù)產(chǎn)品,已經(jīng)融合在 Spring Web Flow 里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊桐经,而 Spring MVC 就是其中最優(yōu)秀的 MVC 框架速和。自從 Spring 2.5 版本發(fā)布后圆雁,由于支持注解配置地淀,易用性得到了大幅度的提高;Spring 3.0 更加完善臼寄,實現(xiàn)了對 Struts 2 的超越霸奕。從現(xiàn)階段來看,Spring MVC 是當前應(yīng)用最多的 MVC 框架吉拳,而且在很多公司质帅,通常會把 Spring MVC 和 Mybatis 整合起來使用。

2 框架原理


在Spring MVC框架中合武,從“Request(請求)”開始临梗,依次進入“DispatcherServlet(核心分發(fā)器)” —> “HandlerMapping(處理器映射)” —> “Controller(控制器)” —> “ModelAndView(模型和視圖)” —> “ViewResolver(視圖解析器)” —> “View(視圖)” —> “Response(響應(yīng))”結(jié)束,其中DispatcherServlet稼跳、HandlerMapping和ViewResolver 只需要在XML文件中配置即可盟庞,從而大大提高了開發(fā)的效率,特別是對于 HandlerMapping 框架為其提供了默認的配置汤善。Spring MVC 框架的結(jié)構(gòu)圖如下所示:

Spring MVC 框架圖

3 搭建 Spring MVC 框架


首先什猖,我們需要下載 Spring MVC 框架的各種依賴包,下載地址為:Spring MVC框架的各種依賴包红淡;然后不狮,創(chuàng)建 Java Web 項目,項目名隨意取在旱,在這里摇零,咱們就不妨取為“springmvc”,構(gòu)建項目結(jié)構(gòu)圖如下:

項目結(jié)構(gòu)圖

在“WEB-INF”目錄下桶蝎,建立“l(fā)ib”目錄驻仅,導(dǎo)入 Spring MVC 框架的相關(guān)依賴包,同時登渣,在“External Libraries”中也導(dǎo)入相同的 jar 包噪服,其中對于“l(fā)ib”目錄,我們直接把 jar 包復(fù)制過來就可以胜茧;但是對于“External Libraries”粘优,我們就得通過“Project Structure”進行導(dǎo)入啦,具體 jar 包的導(dǎo)入方法可以參考:詳述 IntelliJ IDEA 之 添加 jar 包。至于需要導(dǎo)入的 jar 包雹顺,在我們先前下載的“Spring MVC框架的各種依賴包”中都可以找到丹墨,下面附上需要導(dǎo)入的 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,即核心分發(fā)器:

<?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 頁面復(fù)制到 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" />

    <!-- 內(nèi)部資源視圖解析器闪金,前綴 + 邏輯名 + 后綴 -->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

操作完以上步驟后,咱們就已經(jīng)初步搭建了 Spring MVC 框架论颅,接下來哎垦,再配置一下 web 服務(wù)器就可以成功運行啦!在這里恃疯,作者用的 web 服務(wù)器是 tomcat漏设,配置完的結(jié)果如下所示:


Tomcat配置

其中,標號1今妄,為tomcat服務(wù)器的名稱郑口,可以隨意取名;標號2盾鳞,為web服務(wù)器默認啟動的瀏覽器犬性;標號3,為訪問路徑腾仅;標號4乒裆,為虛擬機參數(shù)配置,在此沒有進行配置推励,即采用了默認的配置鹤耍;標號5,為Java運行環(huán)境配置吹艇;標號6惰蜜,為端口號配置;標號7受神,為部署tomcat服務(wù)器抛猖,點擊進入后,配置如下:

部署tomcat

至此,Spring MVC 框架搭建成功财著,運行程序后联四,將在 Chrome 瀏覽器顯示如下內(nèi)容:

JSP頁面

溫馨提示:在此項目中,由于使用的是 IntelliJ IDEA 撑教,因此不用咱們自己建立lib包朝墩,直接將jar包導(dǎo)到External Libraries中即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伟姐,一起剝皮案震驚了整個濱河市收苏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌愤兵,老刑警劉巖鹿霸,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秆乳,居然都是意外死亡懦鼠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門屹堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肛冶,“玉大人,你說我怎么就攤上這事扯键∧佬洌” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵忧陪,是天一觀的道長扣泊。 經(jīng)常有香客問我,道長嘶摊,這世上最難降的妖魔是什么延蟹? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮叶堆,結(jié)果婚禮上阱飘,老公的妹妹穿的比我還像新娘。我一直安慰自己虱颗,他們只是感情好沥匈,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忘渔,像睡著了一般高帖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畦粮,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天散址,我揣著相機與錄音乖阵,去河邊找鬼。 笑死预麸,一個胖子當著我的面吹牛瞪浸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吏祸,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼对蒲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贡翘?” 一聲冷哼從身側(cè)響起蹈矮,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸣驱,沒想到半個月后含滴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡丐巫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了勺美。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片递胧。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赡茸,靈堂內(nèi)的尸體忽然破棺而出缎脾,到底是詐尸還是另有隱情,我是刑警寧澤占卧,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布遗菠,位于F島的核電站,受9級特大地震影響华蜒,放射性物質(zhì)發(fā)生泄漏辙纬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一叭喜、第九天 我趴在偏房一處隱蔽的房頂上張望贺拣。 院中可真熱鬧,春花似錦捂蕴、人聲如沸譬涡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡匀。三九已至,卻和暖如春溉知,著一層夾襖步出監(jiān)牢的瞬間陨瘩,已是汗流浹背腕够。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拾酝,地道東北人燕少。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像蒿囤,于是被迫代替她去往敵國和親客们。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355