1. 程式人生 > >手把手教你優雅的編寫第一個SpringMVC程式

手把手教你優雅的編寫第一個SpringMVC程式

可能之前寫的文章走進SpringMVC世界,從SpringMVC入門到SpringMVC架構中的第一個springMVC入門程式講解的不是那麼優雅、細緻、精巧,因此特地寫這篇稍微優雅、細緻、精巧一些的文章,至於優雅、細緻、精巧到什麼程度呢,我覺得只要有servlet的基礎應該就能懂(哈哈,好像有點誇大其詞了),反正應該大概可能會適合小白(我不是大牛,我也是小白QnQ)

首先,看一下傳統至今的資料互動的常規套路,嗯,還是原來的味道,真香!

其次,要明確springMVC是充當MVC中的哪個角色,現在我要說的是第一個SpringMVC程式是以jsp ->Servlet (Springmvc)->Jsp流程寫的,一眼看出,是collection層!於是從servlet入手。

普通的servlet流程: 請求-url-pattern -交給對應的servlet去處理

如果現在想用springmvc,而不是普通的servlet,如何告知程式?-如何讓springmvc 介入程式:

Springmvc需要配置一個 Springmvc自帶的servlet

通過以下配置,攔截所有請求,交給SpringMVC處理:

 <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

詳解看下圖:
其中需要注意以下的攔截規則:

< url-pattern > .action < /url-pattern >

/:一切請求 ,注意不是 /*
/user: 攔截以 /user開頭的請求
/user/abc.do: 只攔截該請求
.action: 只攔截 .action結尾的請求

.action為例:

至於init-param的內容,通過原始碼發現...(不說廢話了直接看圖哈哈)

通過init-param屬性配置指定springmvc配置檔案的路徑,如果要省略,必須放到 預設路徑:
/WEB-INF/springDispatcherServlet-servlet.xml


在這裡,考驗一下自己,有沒有什麼辦法能知道預設路徑為/WEB-INF/springDispatcherServlet-servlet.xml的,先自己想想。其實很簡單,我們只要把init-param配置一刪,執行Tomcat,報錯,看異常,這一流程下來你就會發現異常就很明顯的告訴我們預設路徑了,如下圖:

當然,專案中同時相容 springMVC版的servlet和普通版的Servlet

 <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>.action</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

接下來建立一個字尾名為handler的普通類,要想把一個普通類變的不普通有幾種方法:介面/類 、 註解 、 配置 ,而springMVC用註解則顯得時尚,所以採用了註解,特別注意@RequestMapping的用法,因為之後它會非常常見!!!

當然不要忘記給這個類元件掃描,不然springMVC是不認識它的哦,為了方便直接掃描了所在整個包

到這裡,servlet就完成了,接下來是JSP了


再接下來回到springMVC.xml配置中,要再學習一個好東西那就是InternalResourceViewResolver檢視解析器,首先觀察原始碼,如下圖:


這個時候,你再寫請求時,直接寫success的時候,預設就會給你解析為如下圖;

到這裡,基本上就大功告成了,於是到了膽戰心驚的測試程式環節了,緊張又刺激!

好了,最後一起來分析分析一下我們的第一個springMVC的入門程式的整體流程吧!

什麼?要原始碼。。。額,好的呢
原始碼已打包至網盤
什麼?沒用過百度網盤?
出門右拐————秋名山決鬥
連結:https://pan.baidu.com/s/1JRdk1RsPN-52ddlN-b_MTw
提取碼:5d78

到這裡,恭喜各位,賀喜大家,現在的everybody完美地走上了SpringMVC的不歸之路!一條從入門到入土的道路(話好像不太好聽,但畢竟學習程式設計嘛,活到老,程式設計也就到老!

如果本文對你有一點點幫助,那麼請點個讚唄,謝謝~

最後,若有不足或者不正之處,歡迎指正批評,感激不盡!如果有疑問歡迎留言,絕對第一時間回覆!

歡迎各位關注我的公眾號,一起探討技術,嚮往技術,追求技術,說好了來了就是盆友喔...

相關推薦

手把手優雅編寫一個SpringMVC程式

可能之前寫的文章走進SpringMVC世界,從SpringMVC入門到SpringMVC架構中的第一個springMVC入門程式講解的不是那麼優雅、細緻、精巧,因此特地寫這篇稍微優雅、細緻、精巧一些的文章,至於優雅、細緻、精巧到什麼程度呢,我覺得只要有servlet的基礎應該就能懂(哈哈,好像有點誇大其詞了)

手把手用node擼一個簡易的handless爬蟲cli工具

眾所周知,node功能很強大,為前端提供了更多的可能。今天,就跟大家分享一下我是如何用node寫一個handless爬蟲的。原文連結leeing.site/2018/10/17/… 用到的工具 puppeteer commander inquirer chal

一步步的如何建立一個APP?-swift

準備好了麼? 準備好建立你的第一個app了麼? 在這個教程中,你會學習到如何建立一個簡單的遊戲,叫做“Tap me",遊戲的玩法是看你在30秒之內可以點選按鈕多少次,來給你評分。                                                

技術流 | 手把手用Python設計一個命令列介面

作者 | Yannick Wolff         譯者 | 劉旭坤         整理 | Jane

手把手用Python完成一個控制檯小遊戲

很多人想學Python程式設計或者已經瞭解過一點Python程式設計基礎,卻沒辦法開發出一個專案

【electron】electron入門 如何建立一個electron應用 並進行打包【超詳細】

前言 electron 是一個可以讓我們使用js建立桌面應用程式的框架,並且可以很簡單的實現跨平臺,讓我們可以更輕鬆的書寫業務邏輯,而不用擔心跨平臺的問題。事實上,electron可以被看做一個精簡版的Chrome,內部的V8直譯器固然很強大,但是對比

手把手學python十三講(MRO詳解和神奇的魔法方法)

如果圖片刷不出來,轉到https://www.bilibili.com/read/cv286207MRO重製關於MRO和C3演算法,我又去看了一些文章,然後發現了講的很清楚的文章http://kaiyuan.me/2016/04/27/C3_linearization/。裡面

手把手使用Java實現一個神經網路

首先看一下執行效果: 下面是專案整體目錄: 0.實現神經網路總覽 神經網路由層、神經元、權重、啟用函式和偏置組成。每層都有一個或者多個神經元,每一個神經元都和神經輸入/輸出連線,這些連線就是權重。 需要重點強調一下,一個神經網路可能有很多隱含層,也可能一個沒有,因為每層的神經元數目也可能不同。然而,

從0開始,手把手用Vue開發一個答題App01之專案建立及答題設定頁面開發

## 專案演示 [專案演示](https://kamiba.gitee.io/vue-quiz-app-show-version/) ## 專案原始碼 [專案原始碼](https://gitee.com/kamiba/vue-quiz) ## 配套講解視訊 [配套講解視訊](https://www.bi

從0開始,手把手用Vue開發一個答題App

## 專案演示 [專案演示](https://kamiba.gitee.io/vue-quiz-app-show-version/) ## 專案原始碼 [專案原始碼](https://gitee.com/kamiba/vue-quiz) ## 教程說明 本教程適合對Vue基礎知識有一點了解,但不懂得綜合

一個SpringMVC程式詳解

建立一個java類: package com.myproject.cn; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org

1、編寫一個java程式--Hello—World

1、下載JDK8.0檔案 下載網址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 關於系統配置環境變數,問度娘吧! 2、下載編譯器 編譯器有很多種,包括:Editplus、Ult

一個SpringMVC程式---Hello World

    SpringMVC相關步驟操作 具體檔案 相關程式碼: application.xml <?xml version="1.0" encoding="UTF-8"?> <be

C++編寫一個CGI程式

環境: wamp3.1.0 64bit VS2015 cmake 3.12.0 一、CGI簡介 1、在進行互動式的WWW訪問時,伺服器上需要有相應的程式對輸入的資訊進行處理,這些程式就是CGI程式。 2、cgi-bin目錄:用於存放CGI程式的特殊

一個SpringMVC程式

準備工作: 1、第一步先建立一個maven的工程,選擇webapp專案 2、取一個artificts名字spring-mvc一路下一步,反正是要配的,具體artifacts怎麼用的我還沒弄明白,後面再出個隨筆 3、設定目錄,點選完成建立 4、將預設的依賴刪掉,自己新增springMVC的jar依賴 5

C#程式設計基礎第一課:C#和.NET框架、VS軟體基本使用、編寫一個C#程式

1、.NET平臺和C#語言 .NET 是微軟公司推出的平臺開發環境 C#(C Sharp)是一種強大的、面向物件的程式開發語言,是專為 .NET 開發而設計出的語言。 2002年微軟釋出了.NET框架的第一個版本,是一種比MFC和COM程式設計技術更一致面向物件的環境。

Java菜鳥學習編寫一個java程式HelloWorld

不管學哪門語言,第一個HelloWorld程式成功執行起來的時候,代表著你的學習已經跨進了一小步。做這個java實驗之前,讀者最少要在自己的電腦上安裝好JDK(包括配置好環境變數)。 第一:編寫並儲存程式碼。開啟記事本編寫如圖1所示程式碼,圖1程式碼為(注意輸入程式碼時輸入法一定切換到英

go語言基礎知識-環境搭建以及編寫一個demo程式

Go語言是谷歌2009年推出的一種全新的程式語言,可以在不損失應用程式效能的情況下降低程式碼的複雜性。Google對Go寄予厚望。其設計是讓軟體充分發揮多核心處理器同步多工的優點,並可解決面向物件程式設計的麻煩。它具有現代的程式語言特色,如垃圾回收,幫助程式設計師處理瑣碎但重

EJB環境配置(jboss-as-7.1.1+jdk1.8+eclipse)並編寫一個EJB程式

文章目錄 一、環境配置 寫在前面 下載jboss-as-7.1.1.final並配置環境變數 如果你是jdk1.8,那麼安裝jdk1.7並修改standlone.bat 在eclipse中安裝JBoss Tools開發外掛

[人間也值得] - Mryang帶快速入門一個 Python 程式

第一個 Python 程式 目標 第一個 HelloPython 程式 Python 2.x 與 3​​.x 版本簡介 執行 Python 程式的三種方式 直譯器 —— python / python3 互動式 —— ipytho