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