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