【摘 要】本文在介紹MVC模式的基礎(chǔ)上,分析了基于JSP的MVC模式的實現(xiàn)方案。重點闡述了該方案中JavaBean的使用方式。
【關(guān)鍵詞】MVC;JavaBean;JSP;Servlet
Abstract:The paper introduces the MVC mode,and analyzes the implementation of JSP based on MVC mode.Then the theme focuses on how to use JavaBean in the scheme.
Keywords:MVC;JavaBean;JSP;Servlet
1.MVC模式
利用Java技術(shù)構(gòu)建Web應(yīng)用存在ModelI和ModelII兩種模式。其中,ModelI模式是采用JSP或JSP+JavaBean模式,ModelII模式是采用MVC模式。使用JSP模式開發(fā)Web應(yīng)用,優(yōu)點是簡單易學(xué),便于快速開發(fā)小型網(wǎng)站,但是代碼可讀性較差,較難維護。使用JSP結(jié)合JavaBean開發(fā)Web應(yīng)用,未能實現(xiàn)視圖和業(yè)務(wù)邏輯完全分離,盡管十分簡單但不適合開發(fā)大型應(yīng)用程序,給網(wǎng)頁設(shè)計和維護仍然帶來很多麻煩。
MVC是一種先進的軟件開發(fā)的設(shè)計模式,它把應(yīng)用程序分成三個核心模塊:模型(Model)、視圖(View)、控制器(Controller),它們各自處理自己的任務(wù),相互協(xié)作,實現(xiàn)Web系統(tǒng)的職能分工。模型、視圖、控制器三者在功能上構(gòu)成了一個控制回路,如圖1所示。
圖1 模型、視圖、控制器關(guān)系圖
(1)模型層:模型層又稱業(yè)務(wù)邏輯層,它完成系統(tǒng)的核心功能,負(fù)責(zé)處理用戶的數(shù)據(jù),實現(xiàn)核心業(yè)務(wù)邏輯。同時,模型還為視圖的顯示提供數(shù)據(jù),并可被多個視圖所共享。
(2)視圖層:視圖層的主要任務(wù)是與用戶進行交互,收集用戶的數(shù)據(jù)并顯示模型層提供的數(shù)據(jù)。
(3)控制器:控制器簡單來說就是一個分發(fā)器,主要負(fù)責(zé)接收用戶的請求,然后做出判斷,根據(jù)判斷結(jié)果將請求交給具體的模型進行處理,最后調(diào)用視圖來顯示模型返回的數(shù)據(jù)。
MVC模式通過模型層將人機交互從核心功能中分離出來,而模型對用戶來說是透明的,用戶只需要觀察視圖即可,用戶與模型的交互通過控制器提供的安全方法來實現(xiàn)。
2.JSP中的MVC模式
基于JSP的MVC模式中,模型、視圖、控制器三個角色分別由JavaBean、JSP、Servlet承擔(dān)。即控制器servlet負(fù)責(zé)接受請求,然后根據(jù)請求創(chuàng)建相應(yīng)的JavaBean,由JavaBean處理數(shù)據(jù),servlet把處理結(jié)果再存儲到JavaBean中;JSP頁面獲取JavaBean的數(shù)據(jù)進行顯示。這種設(shè)計模式由于開發(fā)流程明確,層與層之間的分工和技術(shù)要求清晰,非常有利于大系統(tǒng)的開發(fā)。
3.JavaBean
JavaBean是通過封裝具有某種功能或者處理某個業(yè)務(wù)的可重復(fù)使用的軟件組件。由于JavaBean是基于Java語言的,因此JavaBean不依賴平臺,可以在任何安裝了Java運行環(huán)境的平臺上的使用,而不需要重新編譯。但是,JavaBean需要遵循一定的語法規(guī)則:
(1)類中必須提供一個無參的public的構(gòu)造方法。
(2)類的屬性是private的,訪問屬性的方法必須是public的。
(3)如果類的屬性名稱是xxx,類中必須提供兩個方法:getXxx()和setXxx(),分別用來獲取屬性xxx的值和修改屬性xxx的值。即方法的名字用get或set為前綴,后綴是將屬性名稱的首字母大寫的字符序列。對于boolean類型的屬性,允許使用“is”代替上面的“get”和“set”。
4.模型JavaBean的應(yīng)用
基于JSP的MVC模式中,將servlet中創(chuàng)建的bean存儲到內(nèi)置對象,進而轉(zhuǎn)發(fā)給JSP。由于JavaBean的生命周期不同,在servlet中創(chuàng)建的bean與JSP中所指定的bean的銜接方式也不同,使用方式也有所不同。
(1)在servlet端創(chuàng)建Javabean:User u=new User()。
(2)根據(jù)具體系統(tǒng)要求選擇將bean存儲到內(nèi)置對象request,session,application中:request.setAttribute(“key”,u);request.getSession(true).setAttribute(“key”,u);getServletContext().setAttribute(“key”,u)。
(3)在servlet端將存儲到內(nèi)置對象的bean傳遞到JSP頁面,使它在更新視圖中有效,從而通過bean方法得到目的數(shù)據(jù):
方法1(轉(zhuǎn)發(fā)請求):
request.getRequestDispatcher(“show.jsp”).
forward(request,response;
方法2(重定向):
response.sendRedirect(“show.jsp”);
其中,若將bean存儲到request中,傳遞數(shù)據(jù)時只能采用方法1;若將bean存儲到session或application中,兩種方法均可用。
(4)在JSP端更新視圖:
方法1:使用
方法2:內(nèi)置對象通過getAttribute()方法直接獲取bean,將其強制轉(zhuǎn)換為相應(yīng)類型。
若從session中獲取對象:
out.print((User)session.getAttribute(“key”).
getXXX())。
5.總結(jié)
MVC是一種先進的軟件開發(fā)的設(shè)計模式,它把應(yīng)用程序分成三個核心模塊:模型(Model)、視圖(View)、控制器(Controller),實現(xiàn)了Web系統(tǒng)的職能分工。而模型負(fù)責(zé)處理用戶的數(shù)據(jù),實現(xiàn)業(yè)務(wù)邏輯,為視圖的顯示提供數(shù)據(jù)。JavaBean不依賴平臺,實現(xiàn)了代碼復(fù)用,易編寫、易維護、易使用。所以JSP+JavaBean+Servlet的使用是MVC模式的一中簡單而又行之有效的方案。
參考文獻(xiàn):
[1]Sun公司.Servlet技術(shù)文檔[DB/OL].http://java.sun.com/products/servlet/index.jsp,2006-01-01.
[2]耿祥義.JSP實用教程(第二版)[M].北京:清華大學(xué)出版社,2007.
[3]賀建英.JSP中基于JavaBean技術(shù)的數(shù)據(jù)庫訪問研究[J].科技信息,2008,23(1):18-21.
[4]李安,劉曉東.一種流行的WEB開發(fā)模式——JSP+JavaBea[J].微機發(fā)展,2002,11(6):41-43.
[5]顧會珍,劉暾東.MVC架構(gòu)在JSP+JavaBean開發(fā)模式中的應(yīng)用[J]計算機與現(xiàn)代化,2007,11(5):11-13.
作者簡介:朱亞玲(1983—),女,甘肅定西人,蘭州工業(yè)學(xué)院講師,主要研究方向:web開發(fā),圖形圖像與視頻處理。