Servlet+JSP+JavaBean開發模型

一、Servlet

Servlet是用於開發動態web資源的技術,Servlet部署在web服務器上,被動地接收web瀏覽器的請求,並將處理結果通過響應告知用戶。

Servlet的執行過程:
1. web瀏覽器向web服務器提出http請求。
2. web服務器解析請求的主機,應用和web資源
3. 如果是初次訪問該servlet,則創建servlet對象,並調用Init()方法,否則下一步
4. 調用servlet對象的service方法,並生成新的HttpRequest和HttpResponse對象,傳入該servlet對象。在service方法中,會調用doPost()或doGet()方法,處理請求。
5. servlet返回響應信息,web服務器返回響應信息。
url序列圖

二、JSP

jsp 是包含HTML代碼和JAVA代碼的java server page.

jsp執行的是jsp的class文件,其原始的java代碼繼承與HttpJspBase類,而HttpJspBase類繼承與HttpServlet類。
jsp擁有九大對象,其中page,HttpResponse和HTTPRequest對象已經被實例化。
這裏寫圖片描述

三、JavaBean

JavaBean是滿足某些特定書寫規則並實現某些功能的JAVA類。

  • 具有一個無參的構造函數
  • 屬性必須私有化
  • 私有化的屬性通過public類型的方法暴露給其它程序

JavaBean在javaweb中的主要應用是封裝數據。對於遵循以上寫法的JavaBean組件,其它程序可以通過反射技術實例化JavaBean對象,並且通過反射那些遵守命名規範的方法,從而獲知JavaBean的屬性,進而調用其屬性保存數據。

JSP頁面包含三個JavaBean的標籤。

<jsp:useBean id="Name" class="package.class" scope="page"/>
<jsp:setProperty name="Name" property= "*" /> 
<jsp:getProperty name="Name" property="PropertyName" /> 

<jsp:useBean>標籤會在指定範圍內指定類的指定名稱的對象,如果沒有找到,則實例化一個對象。
<jsp:setProperty標籤可以通過自省機制,將網頁表單提交的屬性值封裝在javaBean的對象中。
<jsp:getProperty>標籤通過調用getter方法,獲得該對象的某個屬性的值。

四、Servlet+JSP+JavaBean開發模型與MVC模型

1、典型的MVC模型

  • Model模型:主要用於業務邏輯的處理,對數據進行增刪改查。
  • View視圖:展示模型數據,並提供人機交互界面,用於功能請求等。
  • Controler控制器:接收用戶的請求,委託模型進行處理,選擇視圖展示返回數據。

這裏寫圖片描述

2、Servlet+JSP+JavaBean開發模式

在web應用中,不考慮websocket和HTML5等技術,基本上web服務器不會主動地反饋信息給web瀏覽器,因此,Model不會主動將模型推給視圖。並且,Model的數據獲取和修改都依賴數據庫。因此,Servlet+JSP+JavaBean開發模型下的MVC模型如下圖所示:
這裏寫圖片描述

3、Servlet+JSP+JavaBean開發模式的缺點

  • Servlet作爲Controller的缺點
    • 請求參數到模型的封裝比較麻煩
    • 控制邏輯可能比較複雜
    • 選擇下一個視圖,嚴重依賴Servlet API
    • 給視圖傳輸要展示的模型數據,也需要使用Servlet API
  • JSP作爲View的缺點
    • 很難更換視圖,比如Velocity、FreeMarker
  • JavaBean作爲Model的缺點
    • JavaBean組件負責收集封裝數據,業務邏輯處理,造成JavaBean組件類很龐大
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章