況嫦娥 李俊
摘要:本文探討了J2EE技術(shù)與MVC設(shè)計模式結(jié)構(gòu),并結(jié)合MVC設(shè)計模式,應(yīng)用J2EE架構(gòu),講解了網(wǎng)上書店的開發(fā)。
關(guān)鍵詞:網(wǎng)上書店;MVC模式;J2EE架構(gòu)
1基于J2EE的MVC設(shè)計模式
J2EE是一種利用Java平臺來簡化諸多與多級企業(yè)解決方案的開發(fā)、部署和管理相關(guān)復(fù)雜問題的體系結(jié)構(gòu)。它提供了一個多層次的分布式應(yīng)用模型和一系列開發(fā)技術(shù)規(guī)范。多層次分布式應(yīng)用模型是指根據(jù)功能把應(yīng)用邏輯分成多個層次,每個層次支持相應(yīng)的服務(wù)器和組件,組件在分布式服務(wù)器的組件容器中運行(如Servlet組件在Servlet容器上運行,EJB組件在EJB容器上運行),容器間通過相關(guān)的協(xié)議進(jìn)行通信,實現(xiàn)組件間的相互調(diào)用。遵從這個規(guī)范的開發(fā)者將得到行業(yè)的廣泛支持,使企業(yè)級應(yīng)用的開發(fā)變得簡單、快速。
MVC(Model-View-Controller)是一種經(jīng)典的軟件體系結(jié)構(gòu),它采用了“分治”的思想,將表示和數(shù)據(jù)分離開來,將系統(tǒng)分成三大類:即模型、視圖、控制器。其中模型用于存儲數(shù)據(jù)的對象,以JavaBean的形式存在;視圖是向控制器提交所需數(shù)據(jù)、顯示模型中的數(shù)據(jù),一個模型可以對應(yīng)一個或多個視圖;控制器是負(fù)責(zé)具體的業(yè)務(wù)邏輯操作,即控制器根據(jù)視圖提出的要求對數(shù)據(jù)做出處理,并將有關(guān)結(jié)果存儲到模型中,并負(fù)責(zé)讓模型的視圖進(jìn)行必要的交互,當(dāng)模型中的數(shù)據(jù)變化時,讓視圖更新顯示。
J2EE技術(shù)結(jié)合MVC設(shè)計模式在構(gòu)建企業(yè)級WEB應(yīng)用中,JSP對應(yīng)視圖,應(yīng)當(dāng)盡量避免在JSP中使用大量的Java程序片來處理數(shù)據(jù),否則不利于代碼的復(fù)用;Servlet對應(yīng)于控制器;而JavaBean對應(yīng)于模型,主要進(jìn)行業(yè)務(wù)的處理。基于J2EE的MVC模式的Web應(yīng)用如圖1所示:
2 網(wǎng)上書店系統(tǒng)的實現(xiàn)
網(wǎng)上書店系統(tǒng)的設(shè)計采用了前面介紹的基于J2EE的MVC設(shè)計模式,使用了JSP、Servlet、JavaBean、JDBC等技術(shù)。系統(tǒng)由前臺JSP頁面和后臺的JavaBean程序組成。JSP頁面用于顯示數(shù)據(jù),JavaBean用于訪問數(shù)據(jù)庫和實現(xiàn)復(fù)雜的邏輯和算法。本系統(tǒng)通過DBCONN.java訪問數(shù)據(jù)庫,通過DFFCONL.java來實現(xiàn)網(wǎng)上書店的各種業(yè)務(wù)邏輯,如添加新書、查看用戶資料等。
(1)前臺頁面顯示
前臺頁面主要用于顯示數(shù)據(jù),登錄頁面是一個靜態(tài)的頁面index.html,由網(wǎng)站菜單和登錄頁面組成。當(dāng)用戶成功登錄后,進(jìn)入系統(tǒng)的主頁main.jsp,根據(jù)不同的用戶權(quán)限,主頁中可實現(xiàn)的功能不同。而不同用戶權(quán)限的用戶登錄實現(xiàn)相同的功能,由同一個JSP頁面來實現(xiàn),這樣即可以增強(qiáng)代碼的復(fù)用性,也提高了可維護(hù)性。如果是以管理員的權(quán)限登錄,可以實現(xiàn)以下功能:①添加/刪除圖書種類:由bookpro.jsp來實現(xiàn);②添加新的圖書:newbook.jsp等;③查看用戶信息:serchuser.jsp;④修改圖書資料:updatebook.jsp。
(2) 數(shù)據(jù)訪問對象DBCONN.java
此JavaBean專門用于數(shù)據(jù)庫訪問,包括查詢、插入、修改、刪除。首先采用connect()與數(shù)據(jù)庫連接,然后調(diào)用相應(yīng)的方法來實現(xiàn)相應(yīng)的操作。connect方法代碼如下:
public boolean connect()
{boolean isConnect=false;
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs為你的數(shù)據(jù)庫的
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password); if(conn!=null)
isConnect=true;
}
catch(Exception e)
{
System.out.println(e);
}
return isConnect;
}
(3)業(yè)務(wù)對象模型DFFCONL.java
業(yè)務(wù)對象模型用于實現(xiàn)網(wǎng)上書店系統(tǒng)的各種業(yè)務(wù)邏輯,如新增圖書,查看用戶信息等。用戶執(zhí)行每一個操作,即此JavaBean的一個方法,都要先對用戶權(quán)限進(jìn)行驗證,其中查看用戶信息的代碼如下:
public boolean serchuser(HttpServletRequest request,HttpServletResponse response)
{ boolean isadmin=isAdmin(request,response);
if(!isadmin)
return isadmin;
DBCONN d=new DBCONN();
try{d.connect();
String sql="select * from member";//member為用戶表
Statement selstmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
Statement rs=selstmt.executeQuery(sql);
while(rs.next())
{
System.out.println(“用戶名:”+rs.getString(1)+”真實姓名:”+rs.getString(2)+”地址:”+ rs.getString(3));
}
}
catch(Exception e)
{System.out.print(e);}
finally
{ rs.close();
selstmt.close();
}
return isadmin;
}
(4)數(shù)據(jù)模式的選取
在網(wǎng)上書店系統(tǒng)設(shè)計中我們采用了集中式數(shù)據(jù)庫模式,選用了MicroSoft SQL Server2000數(shù)據(jù)庫,它能處理大量數(shù)據(jù),同時保持?jǐn)?shù)據(jù)庫的完整性并提供許多高級管理數(shù)據(jù)功能。它的靈活性、易用性和安全性給數(shù)據(jù)庫編程提供了大大的方便。
3 結(jié) 語
本文設(shè)計了一個基于J2EE的網(wǎng)上書店系統(tǒng),使用了MVC結(jié)構(gòu),將數(shù)據(jù)、專業(yè)邏輯、表示邏輯、控制邏輯很好地分離開。提高了程序的可重用性、可維護(hù)性、可擴(kuò)展性,優(yōu)化了設(shè)計模式。
參考文獻(xiàn)
[1]孫衛(wèi)琴,李洪成.Tomcat與Java Web開發(fā)技術(shù)詳解[M].北京:電子
工業(yè)出版社,2004.
[2]John Hunt,Chris Loftus.精通J2EE———Java企業(yè)級應(yīng)用[M].周立斌,譯.北京:清華大學(xué)出版社,2004.
[3]Deepak Alur,John Crupi,Dan Malks.J2EE核心模式[M].2版.劉天北,熊節(jié),譯.北京:機(jī)械工業(yè)出版社,2005.
[4]馮相中,王萍 基于J2EE平臺的MVC模式的辦公日志系統(tǒng)的實現(xiàn)[J]計算機(jī)應(yīng)用 2005.12
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文