專案 | 內容 |
---|---|
班級部落格連結 | 2023春軟體工程2020級電腦科學與技術 |
本次作業要求連結 | 實驗五:軟體開發案例(2) |
團隊名稱 | 啊對對隊 |
團隊成員分工 | 趙嘉旺:專案匯入,部落格撰寫;李鋒斌:專案匯入,部落格撰寫;楊煒:增量開發 |
團隊課程學習目標 | (1)理解MVC軟體設計模式(2)練習並掌握JSP+JavaBean+Servlet技術實現的MVC設計模式;(3)練習UML建模技術。 |
本次作業在哪些方面幫助團隊實現學習目標 | 學習和鞏固軟體開發相關知識,對優秀案例進行學習和總結,並進行增量開發提升程式設計水平 |
團隊部落格連結 | 啊對對隊 |
團隊專案Github倉庫地址連結 | (https://github.com/lifengbin1/lfb) |
一、實驗目的與要求
-
理解MVC軟體設計模式;
-
練習並掌握JSP+JavaBean+Servlet技術實現的MVC設計模式;
-
練習UML建模技術。
二、實驗內容
任務1:
建立學生資訊管理的Java web專案
- 在MySQL中建立資料庫:students
- 在students資料庫中建立學生資訊表:student
- 建立Web專案,專案名稱為:studentmanager
- 在專案的src包中建立包model、control、在WebRoot下建立JSP資料夾
- 在專案中新增MySQL資料庫驅動包
- 在src包中建立entity包存放實體類,建立實體類Student.java,其屬性與資料庫表的student的欄位對應,程式中獲取的資料庫表student的記錄就可儲存到Student.java類的物件例項中。
- 在src包中建立dbutil包存放資料庫連線工具類Dbconn.java
- 分別對案例中四個模組的M、V、C層進行編碼,並在專案中的WebRoot/WEB-INF/webWeb.xml中配置control包的6個Servelet控制器。
- 學生資訊列表模組:studentlist.jsp(V)、SearchStudent.java(M)、ListStudentServelet.java(C)
- 新增學生資訊模組:studentinsert.jsp(V)、InsertStudent.java(M)、InsertStudentServlet.java(C)
- 修改學生資訊模組:studentupdate.jsp(V)、SelectStudent.java+UpdateStudent.java(M)、UpStudentServlet.java(修改前)、DoStudentServlet.java(修改後)
- 刪除學生資訊模組:studentshow.jsp(V)、SelectStudent.java+DeleteStudent.java(M)、ShowStudentServlet.java(刪除前)、DeleteStudentServlet.java(刪除後)
- 將專案部署在Tomcat伺服器,在瀏覽器輸入:http://localhost:8080/studentmanager/ListStudentServlet.doc, 測試執行學生資訊的增加、修改、刪除、顯示等操作。
任務2:
學生資訊管理軟體增量開發
- 為案例軟體開發一個新功能,可將excel檔案的學生資訊批次匯入資料庫。
- 在專案的WebRoot資料夾下建立一個upload資料夾用於存放使用者上傳的檔案,增加學生資訊欄位:相片,根據相片欄位的資訊儲存和維護完善案例軟體,要求學生相片檔案存放在伺服器上專案的upload資料夾中,資料庫中存放相片的檔名,顯示相片時是根據檔名到該資料夾中訪問圖片檔案而實現。
- 將任務1與任務2的完成的學生資訊管理軟體原始碼上傳到團隊github倉庫。
任務3:
完成《實驗五 軟體開發案例(2)團隊作業》團隊博文作業
三、實驗結果與步驟
任務1:
- 在MySQL中建立資料庫:students
- 在students資料庫中建立學生資訊表:student
- 建立Web專案,專案名稱為:ADDD_Demo_05, 在專案的src包中建立包model、control、在WebApp下建立js資料夾
- 專案名稱為:ADDD_Dome_05, 在專案的src包中建立包model、control
- 在WebApp下建立js資料夾
4.使用c3p0連線資料庫
- 在src包中建立entity包存放實體類,建立實體類Student.java,其屬性與資料庫表的student的欄位對應,程式中獲取的資料庫表student的記錄就可儲存到Student.java類的物件例項中。
- 在src包中建立dbutil包存放資料庫連線工具類Dbconn.java
- 分別對案例中四個模組的M、V、C層進行編碼,並在專案中的WebRoot/WEB-INF/web.xml中配置control包的6個Servelet控制器。
-
對案例中四個模組的M、V、C層進行編碼
-
為control包的6個Servelet控制器寫宣告
- 將專案部署在Tomcat伺服器,在瀏覽器輸入:http://localhost:8080/studentmanager/ListStudentServlet.doc, 測試執行學生資訊的增加、修改、刪除、顯示等操作。
-
將專案部署Tomcat伺服器
-
在瀏覽器輸入:http://localhost:8080/ADDD_Demo_05/ListStudentServlet.doc, 測試執行學生資訊的增加、修改、刪除、顯示等操作
-
學生資訊顯示
-
學生資訊新增
-
學生資訊新增顯示
-
學生資訊查詢,查詢202005使用者
-
學生資訊刪除
-
學生資訊修改
-
學生資訊修改顯示
-
任務2:
學生資訊管理軟體增量開發
- 將excel檔案的學生資訊批次匯入資料庫。
- excel資料
- 將Excel資料匯入資料庫及顯示
- 資料選擇
- 資料匯入
- 資料選擇
- 在專案的images資料夾下建立一個upload資料夾用於存放使用者上傳的檔案,增加學生資訊欄位:相片,根據相片欄位的資訊儲存和維護完善案例軟體,要求學生相片檔案存放在伺服器上專案的upload資料夾中,資料庫中存放相片的檔名,顯示相片時是根據檔名到該資料夾中訪問圖片檔案而實現。
- 在專案的images資料夾下建立一個upload資料夾用於存放使用者上傳的檔案
- 修改資料庫表結構
- 為每個使用者增添使用者影像
3.將任務1與任務2的完成的學生資訊管理軟體原始碼上傳到團隊github倉庫。
任務3:
1. 完成《實驗五 軟體開發案例(2)團隊作業》團隊博文作業
2. 各項任務完成時間(單位:h)
任務內容 | 預計花費時間(h) | 實際花費時間(h) |
---|---|---|
任務1 | 1.2 | 1.1 |
任務2 | 5 | 3 |
任務3 | 2 | 1.5 |
3.總結Servlet技術的工作原理
- 當Web伺服器接收到一個HTTP請求時,它會先判斷請求內容——如果是靜態網頁資料,Web伺服器將會自行處理,然後產生響應資訊;如果牽涉到動態資料,Web伺服器會將請求轉交給Servlet容器。此時Servlet容器會找到對應的處理該請求的Servlet例項來處理,結果會送回Web伺服器,再由Web伺服器傳回使用者端。針對同一個Servlet,Servlet容器會在第一次收到http請求時建立一個Servlet例項,然後啟動一個執行緒。第二次收到http請求時,Servlet容器無須建立相同的Servlet例項,而是啟動第二個執行緒來服務客戶端請求。所以多執行緒方式不但可以提高Web應用程式的執行效率,也可以降低Web伺服器的系統負擔。
- Web Client 向Servlet容器(Tomcat)發出Http請求;
- Servlet容器接收Web Client的請求;
- Servlet容器建立一個HttpRequest物件,將Web Client請求的資訊封裝到這個物件中;
- Servlet容器建立一個HttpResponse物件;
- Servlet容器呼叫HttpServlet物件的service方法,把HttpRequest物件與HttpResponse物件作為引數傳給 HttpServlet物件;
- HttpServlet呼叫HttpRequest物件的有關方法,獲取Http請求資訊;
- HttpServlet呼叫HttpResponse物件的有關方法,生成響應資料;
- Servlet容器把HttpServlet的響應結果傳給Web Client;
4.總結MVC設計模式的特點
1.MVC 原理
MVC 是一種程式開發設計模式,它實現了顯示模組與功能模組的分離。提高了程式的可維
護性、可移植性、可擴充套件性與可重用性,降低了程式的開發難度。它主要分模型、檢視、控制器三層。
(1)模型(model)它是應用程式的主體部分,主要包括業務邏輯模組和資料模組。模型與資料格式無關,這樣一個模型能為多個檢視提供資料。由於應用於模型的程式碼只需寫一次就可以被多個檢視重用,所以減少了程式碼的重複性
(2)檢視(view) 使用者與之互動的介面、在 web 中檢視一般由 jsp,html 組成
(3)控制器(controller)接收來自介面的請求 並交給模型進行處理 在這個過程中控制器不做任何處理只是起到了一個連線的作用
2.MVC 的優點
(1)降低程式碼耦合性。在 MVC 模式中,三個層各施其職,所以如果一旦哪一層的需求發
生了變化,就只需要更改相應的層中的程式碼而不會影響到其他層中的程式碼。
(2)有利於分工合作。在 MVC 模式中,由於按層把系統分開,那麼就能更好的實現開發
中的分工。網頁設計人員可進行開發檢視層中的 JSP,而對業務熟悉的人員可開發業務層,
而其他開發人員可開發控制層。
(3)有利於元件的重用。如控制層可獨立成一個能用的元件,表示層也可做成通用的操作
介面。可以為一個模型在執行時同時建立和使用多個檢視。
3.MVC 的不足之處
(1)增加了系統結構和實現的複雜性。對於簡單的介面,嚴格遵循 MVC,使模型、檢視
與控制器分離,會增加結構的複雜性,並可能產生過多的更新操作,降低執行效率。
(2)檢視與控制器間的過於緊密的連線。檢視與控制器是相互分離,但確實聯絡緊密的部
件,檢視沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立
重用。
(3)檢視對模型資料的低效率訪問。依據模型操作介面的不同,檢視可能需要多次呼叫才
能獲得足夠的顯示資料。對未變化資料的不必要的頻繁訪問,也將損害操作效能。
(4)目前,一般高階的介面工具或構造器不支援模式。改造這些工具以適應 MVC 需要和
建立分離的部件的代價是很高的,從而造成 MVC 使用的困難。
實驗心得體會
成員 | 心得體會 |
---|---|
趙嘉旺 | 透過本次實驗,我深入認識了MVC設計模式的特點和優勢,進一步掌握了JavaEE技術中的Servlet程式設計和MySQL資料庫的操作。同時,在團隊合作過程中,我學習了Git的使用和UML建模工具的運用,加強了團隊協作和溝通的能力。 |
楊煒 | 本次實驗讓我深入瞭解了Java Web開發中的Servlet技術以及頁面跳轉和資料互動的方式,在團隊合作過程中也深化了對Git的理解和掌握,更好地協同合作完成了本次任務。 |
李鋒斌 | 本次實驗讓我對Java Web開發中的MVC設計模式進行深入理解和掌握,同時在頁面設計和編碼方面有了更加全面和深入的實踐,感謝團隊的合作幫助我成長和進步。 |