王崟


摘要:基本的JavaWeb開發分成Modell和Model2兩種模式。本文分析了基于Moddl模式的Javaweb項目驅動教學的優點,以及這種模式對于后續框架課程支撐的不足。詳細介紹了基于Mode12模式的教學設計以及實施時面臨的問題。關鍵詞:Javaweb;項目驅動式教學;M0dell模式;M0del2模式
中圖分類號:G642 文獻標識碼:A
文章編號:1009-3044(2019)28-0171-02
1引言
Java服務端開發課程是從Javaweb開始的,逐漸進階到一些第三方的框架。基本的Java Web開發分成Modell和Model2兩種模式。Modell方式下JSP頁面承擔了控制邏輯、部分業務處理和數據表現。Model2方式是一種MVC架構,Servlet作為控制器,而JSP頁面負責數據表現。Java web項目驅動式教學也經歷了從Moddl到Modd2方式的轉變,本文介紹了Modell模式下的教學現狀,以及轉變為Modd2模式時的教學設計和面臨的問題。
2Modell和Model2模式
(1)Moddl模式
Modell模式使用了兩種技術:JSP和JavaBean。在Modell模式下,整個Web應用幾乎全部由JSP頁面組成,JSP頁面接受處理客戶端請求,對請求進行處理并向客戶端發回響應。業務邏輯可以完全放在JSP頁面中,也可以放在JavaBean中。Mod-e11模式架構圖如圖l所示。
Modell方式中,JSP頁面既充當控制器又作為表現層,大量Java代碼和頁面代碼同時存在于JSP頁面中,不利于擴展和維護。但是Model架構簡單,初學者更容易入門,
(2)Modd2模式
Mode12方式是一種MVC架構,使用了三種技術JSP、Servlet和JavaBean。Servlet作為控制器,負責響應客戶端請求,調用業務邏輯、轉發或重定向到JSP頁面。JSP負責數據表現。Java-Bean主要負責處理業務邏輯。Modell模式架構圖如圖2所示。
Modd2方式將控制層和視圖層分離,代碼結構清晰,易于維護,對于開發人員有更高的要求。
3Modell模式下的項目式教學帶來的幾點問題
Moddl模式下用戶的請求直接提交給JSP頁面處理,頁面處理請求后向客戶端返回響應。這種方式的處理邏輯相對簡單,對初學者來說比較容易入門,只需要在JSP頁面中寫Java語句即可。在以前的教學中,商品展示、用戶登錄、注冊、購物車、結賬功能均使用Moddl模式來實現,只是在最后的訂單模塊使用servlet來完成請求的處理和分發。雖然這種方式學生可以比較輕松地完成一個購物網站的開發,也比較有成就感,但這種項目開發方式對于Java服務端開發的基本知識積累和后續框架課程帶來了一些不利的影響。
3.1Servlet API的基礎不扎實
由于Moddl方式中處理請求、請求轉發等代碼都是在JSP中完成的,這導致學生更多地使用JSP中的隱含對象,例如re-quest、session等,甚至使用JSP指令來完成。這些對象對應的服務端核心類和接口,學生不太熟悉,甚至不清楚這些對象究竟是什么類型,還可以執行哪些操作。請求轉發操作對應的Java代碼也不清楚。這對于以后的MVC框架課程中使用服務端對象會帶來不利的影響。
3.2服務端配置不熟悉
Moddl方式的JSP頁面,幾乎不用任何服務端的配置,web.xml文件中無須特殊的配置,這導致學生不能體會配置在web開發的重要性。而Java web開發實際是需要大量的配置文件和注解的,在第一門入門課程,就應讓學生關注配置。雖然引人Servlet之后,也只有一些Servlet的配置,但可以讓學生在開發每一個功能的時候都知道配置的重要性。
3.3對于請求地址的認識停留在文件路徑上
Web頁面中存在大量超鏈接、表單提交地址,而Modell模式下請求都提交給JSP頁面,寫地址時都是寫頁面地址,也就是頁面文件的路徑。頁面文件的路徑寫法比較直觀,也不易寫錯。但以后的MVC框架課程中有大量請求控制器的地址,這類地址是用戶自定義的,和配置有關,無法從工程目錄結構直接看出。學生缺乏這方面的訓練,以后會難以適應。引入Serv-let作為控制器之后,學生就會學著根據servlet配置的url-pat-tern來訪問servlet。
3.4不利于以后MVC框架的學習
Modell模式下,JSP頁面既充當控制器又作為表現層,請求提交給JSP頁面,JSP頁面調用JavaBean完成了大部分工作。適應了這種模式之后,轉為MVC模式開發會遇到困難。學生需要重新去認識JSP頁面應只負責數據展現,而不應去參與控制和業務處理。學生還需理解請求應先到達控制器,由控制器解析請求,調用業務層或者持久層完成數據處理之后,再將要展現的數據保存在適當的模型中,轉發到頁面進行展示。
4Model2模式下的項目式教學理論知識模塊改進方案
保持Modell模式下的理論知識教學順序不變,課程的知識部分依舊分成Web服務器原理和Http協、Servlet技術、JSP技術、維護會話幾個模塊。
4.1加強Servlet API教學
在Servlet技術入門中,除了servlet的創建、配置、生命周期、獲取請求參數和發回響應。還要強化ServletAPI的使用,將HttpServletRequest和HttpServletResponse的使用在servlet技術入門中講透,特別是請求轉發、重定向、在請求中保存/取得屬性的方法。
在維護會話模塊中,以前介紹cookie,session,applicmion對象時,均使用JSP范例,改革后范例必須結合servlet和JSP,學生要知道如何在servlet中使用上述對象,如何維護會話,也要知道在JSP頁面中如何使用。
4.2Servia注解式配置和XML式配置均要強化
現在Servlet可以使用傳統的XML方式的配置,也支持注解式的配置。雖然注解式的配置簡單易懂,但注解只能加在自己開發的Servia類上,如以后使用第三方的servlet,還是得使用XML方式的配置。所以在教學中這兩種方式都得要求學生掌握,每次練習,均要求學生用兩種方式進行配置。
4.3弱化JSP訪問JavaBean
由于JSP主要用于數據展示,JSP技術模塊需要講解JSP工作原理,JSP指令、JSP聲明、Java程序片段、Java表達式、JSP注釋。著重講解如何取得請求中的參數和屬性,一些不太常用的隱含對象只需要了解即可。
Mode12模式下請求都是提交給Servlet處理,如請求參數較多,需使用多句request.getParameter語句來取得參數值。雖然暫時有點麻煩,但以后的MVC框架都有請求綁定到控制器方法參數的手段。因此,JSP中的useBean標簽幾乎沒有機會使用,這部分內容在JSP技術中可以不再介紹。
5Mode12模式下的項目開發案例改進方案
項目開發案例依舊采用購物網站,包括商品展示、用戶管理、購物車管理、結賬、查看訂單和訂單明細幾大模塊。網站將使用Model2模式開發,主要模塊的設計如下:
(1)商品展示模塊僅有一個頁面
原來的Modell模式商品展示有4個頁面組成:全部商品、特價商品、商城新品、商品搜索。改進后,只有一個展示頁面,由servlet根據用戶的請求查詢出商品列表后,存儲在request中,轉發到商品展示頁面進行展現。
(2)用戶管理中所有業務處理均移至Servlet中
登錄中判定用戶名、密碼是否正確;注冊中的判定用戶名是否重復、插入數據庫等功能均在由Servlet處理,處理后根據處理結果跳轉到不同的頁面。
(3)購物功能包含一個購物車展示頁面和一個提交訂單頁面
添加商品到購物車、刪除購物車商品、修改數量、清空購物車、提交訂單功能均由Servlet處理。只有一個購物車展示頁面,用來展示用戶當前的購物車,一個填寫訂單收貨地址頁面。
(4)訂單查看
查詢訂單功能由Servlet處理,查詢出結果后轉發到查看訂單、查看訂單明細頁面。
6結語
本文探討了Java web項目驅動式教學從Modell到Model2模式的改進,介紹了Modell模式的不足,給出了Model2模式的改進方案。