1. 程式人生 > >拒絕低效搬磚,如何快速上手主流 Web 框架?

拒絕低效搬磚,如何快速上手主流 Web 框架?

640?wx_fmt=gif

640?wx_fmt=jpeg

作為一位 Java Web 開發人員,你是否遭遇過下面這些狀況:

· 客戶端請求引數我要一個個地取,不能用迴圈,醉了……

· 引數取出來都是 String 型別,我還得一個個做型別轉換,很惱火…...

· 配置檔案寫得比程式碼還多,這是要逼瘋我的節奏嗎?

· Servlet 處理多個請求,需要手動完成邏輯控制,就不能智慧一點嗎?!

如果你堅持使用原生的 Servlet 做開發,上面這些坑是一定繞不過去的。Servlet 是 Java Web 的基石,首先簡單談一下 Servlet,為什麼使用起來這麼不方便。

Web 開發的原理是服務端接收到客戶端傳來的 request,進行業務處理,然後將結果通過 Response 響應給客戶端的過程。

客戶端和服務端通過 HTTP 協議進行資料互動,底層機制是客戶端將使用者輸入的資訊組裝成 HTTP 協議報文,然後通過網路將報文傳輸到服務端。

服務端通過特定的 Web 容器(Tomcat、Jetty 等)接收報文並進行解析,將資料封裝到 request 物件中,並通過 request 獲取資料進行業務邏輯處理,將處理結果封裝到 response 物件中,傳給 Web 容器。

Web 容器再次進行解析,將 response 物件轉為 HTTP 協議報文返回給客戶端,客戶端對結果進行渲染展示給使用者。

640?wx_fmt=jpeg

服務端具體對接收請求做出響應的工作是由 Servlet 來完成的,但是 Servlet 有其自身無法克服的缺點:配置過於繁瑣。

同時 HTTP 協議傳輸的資料都是文字形式,這就需要開發者進行大量的資料型別轉換,這種工作沒有技術含量、簡單枯燥易出錯。因此,使用 Servlet 顯得非常低效和落後。

我們的時間和精力是有限的,不能把有限的時間和精力浪費在沒有技術含量的體力活上,我們追求的是更加高效、更加便捷的開發模式。

這就是框架存在的價值:讓開發者將精力集中在核心業務的開發上,框架會幫你遮蔽掉跟業務開發無關的各種問題,體力活框架幫你做。

框架的特點就是在原有技術的基礎上,提供一套和原技術具備相同業務功能的元件,同時比原技術更加高效易用,功能更加強大。

Spring MVC 就是這樣一款實現 MVC 設計模式的框架,是 Spring 框架的一個分支產品,以 Spring IoC 容器為基礎,並利用容器的特性來簡化它的配置。

Spring MVC 相當於 Spring 的一個子模組,可以很好地和 Spring 結合起來進行開發,是每一個 Java Web 開發者都應該掌握的技術。

為什麼要使用 Spring MVC

使用 Spring MVC 可以幫助你遮蔽掉繁瑣的資料型別、資料繫結,同時提高良好的自定義校驗,強大的標籤庫,讓你開發起來更加得心應手、高效。

相比於 Struts2 框架,Spring MVC 的開發效率和效能更高,配置更簡單,功能更強大,同時可以和 Spring 框架無縫對接,安全性比 Struts2 更高。

Spring MVC 的優點

  • 完整的角色劃分:每種角色各司其職、協同工作。

  • 簡便的配置方式:以 Spring IoC 為基礎,將各個元件都以 JavaBean 的形式配置。

  • 程式碼複用:可使用現有的業務物件作為表單物件,不需要去擴充套件某個特定框架的基類。

  • 自定義資料轉換器:可根據需求對資料型別進行轉換,比如將特定格式的字串轉為日期型別。

  • 功能強大的表單標籤庫:讓 JSP 表單的資料繫結更加便捷高效。

  • 國際化:支援根據使用者區域顯示不同國家的語言。

Spring MVC 工作流程

  • 客戶端請求被 DispatcherServlet(前端控制器)接收

  • 根據 HandlerMapping 對映到 Handler

  • 生成 Handler 和 HandlerInterceptor(如果有則生成)

  • Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式一併返回給 DispatcherServlet

  • DispatcherServlet 通過 HandlerAdapter 呼叫 Handler 的方法做業務邏輯處理

  • 返回一個 ModelAndView 物件給 DispatcherServlet

  • DispatcherServlet 將獲取的 ModelAndView 物件傳給 ViewResolver 檢視解析器,將邏輯檢視解析成物理檢視 View

  • ViewResolver 返回一個 View 給 DispatcherServlet

  • DispatcherServlet 根據 View 進行檢視渲染(將模型資料填充到檢視中)

  • DispatcherServlet 將渲染後的檢視響應給客戶端

    640?wx_fmt=jpeg

如果你想學習 Spring MVC

上面簡單跟大家聊了聊 Spring MVC 的廣泛應用和優勢。如果你想快速瞭解並掌握 Spring MVC 在專案中最常用的技能點,以及在實際開發中 Spring MVC 與其他技術的整合,為你推薦我在 GitChat 新上的《Spring MVC 實戰手冊》課程。

現在各種各樣的學習資料非常多,從浩如煙海的資源中提煉出有價值、實用性強的資訊需要付出時間成本。

而《Spring MVC 實戰手冊》課程就是特別期待能夠幫助讀者節省時間,吸收到真正需要的知識、達到事半功倍的效果。

我的一點兒學習經驗

我從事 Java 開發多年,一直以來都有總結的習慣,無論是學習還是工作中遇到的問題,哪怕是一個很小的點,我也會看書或者上網查資料,儘可能將它搞清楚。

同時,每個技能點都要用程式碼的實現結果來驗證理論,久而久之我總結的筆記越來越多,當積累到達一定程度的時候,量變會升華為質變,所謂積跬步以致千里。

記錄和總結完善了我的知識體系,提高了我解決問題的能力。在實際的開發中,也對於提高工作效率起到了很重要的作用。

我將多年來的筆記重新編排、整理,不但有技能點的詳細闡述,同時加入了自己的思考和見解,以及一些實際開發的經驗技巧,最終形成了《Spring MVC 實戰手冊》課程。這個過程讓我獲益良多,相信也會對訂閱課程的讀者有所裨益。

記筆記和總結是非常優秀的習慣,建議大家也在學習這門課程的過程中持續保持。

課程大綱

   640?wx_fmt=png

第一部分為 Spring IoC 篇(第01~04課),IoC 作為 Spring 框架體系的底層容器,是我們必須掌握的基礎,這部分內容將講解 Spring IoC 的原理及實際應用。

第二部分為 Spring MVC 詳解篇(第05~17課),這部分內容將詳細講解 Spring MVC 的使用,涵蓋了實際開發中所常用的技能點,理論結合實踐的方式不僅僅是教給讀者基本概念,同時讓讀者具備使用 Spring MVC 開發專案的能力。

第三部分為 MongoDB 篇(第18~21課),這部分內容將講解當前主流的 NoSQL 資料庫 MongDB,包括安裝及使用。

第四部分為專案實戰篇(第22~23課),這部分內容將講解 Nginx 搭建 Tomcat 叢集,以及使用 Spring MVC + Layui + Spring Data + MongoDB 的技術選型完成一個專案實戰。

640?wx_fmt=jpeg

訂購本課程可獲得專屬海報,分享專屬海報邀請一位好友購買,即可獲得25%的現金返現,多邀多得,上不封頂,立即提現。

提現流程:請在 GitChat 服務號中點選“我-我的邀請-提現”進行提現。

640?wx_fmt=png