Java 開發基本技能,你都get了嗎?

作爲一位 Java Web 開發人員,大概會遭遇過下面這些狀況:

  • 客戶端請求參數,要一個個地取,不能用循環,醉了……
  • 參數取出來都是 String 類型,還得一個個做類型轉換,很惱火…...
  • 配置文件寫得比代碼還多,這是要逼瘋開發的節奏嗎?
  • Servlet 處理多個請求,需要手動完成邏輯控制,就不能智能一點嗎?!

如果堅持使用原生的 Servlet 做開發,上面這些坑是一定繞不過去的。

Servlet 是 Java Web 的基石, 爲什麼Servlet使用起來這麼不方便?

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

客戶端和服務端通過 HTTP 協議進行數據交互,底層機制是客戶端將用戶輸入的信息組裝成 HTTP 協議報文,然後通過網絡將報文傳輸到服務端。

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

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

服務端具體對接收請求做出響應的工作是由 Servlet 來完成的,但是 Servlet 有其自身無法克服的缺點:配置過於繁瑣,同時 HTTP 協議傳輸的數據都是文本形式,這就需要開發者進行大量的數據類型轉換,這種工作沒有技術含量、簡單枯燥易出錯。因此,使用 Servlet 顯得非常低效和落後。

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

讓開發者將精力集中在覈心業務的開發上,就是框架存在的價值。

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

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 將渲染後的視圖響應給客戶端
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章