mvc框架范文

時間:2023-03-31 09:23:08

導語:如何才能寫好一篇mvc框架,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。

mvc框架

篇1

【關鍵詞】.NET mvc框架 Web 設計

在基于.NET MVC框架的Web出現以前,Web中的主要技術是ASP、JSP等技術,這些技術的應用很容易將業務邏輯與頁面顯示混合起來,并不利于分工與協作。同時由于在業務邏輯層中含有SQL語句,如果出現數據庫變化等,將直接影響到系統修改,其不利于系統維護。因此,基于.NET MVC框架的Web設計成為計算機領域研究重點。

1 MVC優點

MVC的優點主要體現在以下幾點:

1.1 共享性

它主要是利用模型完成數據返回的,且可以利用視圖實現數據傳達,并實現格式化,然后再將這些信息傳遞到用戶手中,在數據分離形式的作用下,也可以有效提升系統代碼的移植性與重用性。

1.2 控制性

這一點主要表現在控制器對業務的控制上,它能夠結合用戶實際情況完成控制,然后從模型層中獲得必要的信息,再將這些信息傳遞到視圖層中,并讓這些數據顯現出來,這樣也可以有效提升應用程序的可配置性與靈活性。

2 MVC設計思想

MVC主要由三部分構成,分別為模型層、視圖層以及控制器層。為做好NVC設計,就需要充分了解這三個層次:

2.1 視圖層

它所代表的是同網頁用戶的應用界面,也就是Web中的HTML頁面。一般來講,視圖層主要是將系統中的數據呈現出來,且為用戶提供有利于交互的界面,這樣一來也就減少了地其他業務的處理。在實際利用的過程中,視圖通常需要提交數據用戶以后再接受其他數據,然后再將這些數據以用戶需求的方式體現出來,同時,用戶也會利用視圖層將自己的請求傳送到模型中。

2.2 模型層

它是MVC框架中最重要的組成部分,是實現系統邏輯處理的重要組成部分。在模型接收來自視圖層的請求以后,就會自動處理,然后再將處理結果在控制器的作用下回饋給視圖層。在這一過程中,控制器與視圖層均是通過操作的方式進行工作的。

2.3 控制層

對于控制器來說,其功能是將用戶發出的請求反映給模型,然后再將模型所給出的結果反映給用戶,可以說控制層是視圖層與模型之間的中轉環節,是反饋用戶請求的重要力量,但它并不參與數據處理工作。

3 基于.NET MVC框架的Web設計

對于常規Web應用系統來說,主要分為表示層、業務層以及數據庫層幾個部分,在表示層中,只有視圖與控制器兩部分;在業務層中有業務邏輯層、實體層、數據訪問及其接口層;在數據層中僅有數據庫。要做好基于.NET MVC框架的Web設計,應從以下幾方面入手:

3.1 表示層

對于.NET MVC框架來說,在的作用下能夠獲得良好且有利于MVC設計實現的環境。開發人員只要利用.aspx頁面中的開發用戶接口就可以將視圖展示出來,同時也可以將控制器中的功能體現出來。模型主要對應的則是業務應用部分。為做好基于.NET MVC框架的Web設計,可以在頁面控制器的作用下優化MVC,然后在應用程序各個頁面的公用方法中編入基類,這樣一來,所有頁面中都存在基類,它們不僅可以將自己原有的內容體現出來,還具有其他作用。

3.2 業務層

對于業務層來說,它是MVC設計中十分重要的一部分,也是基于.NET MVC框架的Web設計基礎,在這一部分的設計中應從以下幾方面入手:

(1)保證業務邏輯與數據實體相分離,兩者屬于不同的組成部分,對于業務邏輯類來說,主要是利用實體對象完成業務規則與邏輯實現的,而實體層則有自己的實體對象,一般來講只有屬性,不存在方法,所以主要用于數據實體展現。

(2)分x數據訪問與業務。在這一部分中主要涵蓋了數據訪問層及其接口層,它的主要作用是讓業務邏輯層可以全面的描述業務規則,這樣一來就可以用數據訪問層完成實體對象與數據庫交互。為做好基于.NET MVC框架的Web設計,應將數據訪問接口層加入到訪問層與業務邏輯層之間,這樣不僅可以起到工廠模式的作用還能讓數據訪問方法構成抽象接口,這樣就可以將業務邏輯層與數據訪問層分離開來,同時也便于配置文件的修改。

(3)為做好基于.NET MVC框架的Web設計,還要在訪問層中應用NHibernate工具,它是以.NET為基礎建立起來的關系型數據庫,屬于對象持久化類庫的一種。在NHibernate中不必編寫SQL語句,它可以將相關的映射信息保留下來,并存儲到原數據中,這樣就可以讓代碼與對象之間存在一定的關聯性,并自動生成SQL語句,這樣也可以讓對象存儲到表與字段中。

3.3 模型層

由于模型是應用程序的中心,其中涵蓋了很多與應用程序相關的內容,所以,在實際設計中,應進一步強化應用程序的持久化。對于基于.NET MVC框架的Web設計來說,可以將LINQ-TO-SQL應用其中,原因在于這種設計方式不僅有利于,還可以將.NET平臺與LINQ機制結合在一起,這也是有效提升數據庫處理能力的有效方式。在設計中,可以先為應用程序創建DAL,但不需要編寫代碼,然后再做進一步細分,并用LINQ完成語句查詢,且從數據庫中找出所需的實體對象。在設計完成以后,LINQ-TO-SQL就可以將不必要的細節忽略,這樣既能有效提升數據庫操作的便利性,也能進一步強化業務邏輯開發,更可以加快數據應用程序開發速度。

3.4 控制層

由于控制層主要用于用戶請求與輸入處理,然后再將結果反饋給客戶端,同時完成數據集合與處理,并為其呈現合適的視圖,這樣就可以將隱藏其中的視圖代碼消除。為做好設計首先應創建合適的模型,并全面檢查數據訪問與執行狀態,且提供一定的面向對象數據,這樣就可以讓數據與方法結合在一起,且構成一定的視圖。在.NET MVC框架完成以后,也可以更好的完成各個元素之間的協調與組織,這也是有效強化程序元素交互的有效方式。為進一步做好應用程序測試,還要做好類顯示輸出,以便為用戶輸入奠定基礎,盡管編寫程序相對復雜,但且會因.NET MVC框架的不同,將業務邏輯分離開,這樣也可以有效提升單元測試效率。

3.5 視圖層

在基于.NET MVC框架的Web設計中,視圖層主要用于模型展示,在視圖層的作用下可以將瀏覽器中的HTML頁面展示出來,所以,在實際時可以利用微軟控件實現控制,這樣也可以讓HTML更加潔與高效。然后通過.NET MVC提供的相關說明了解各個控件的作用,這樣就可以順利完成視圖層設計與開發,相關開發也可以有效提升工作效率。在視圖層設計完成以后,還可以順利完成視圖檢查等,尤其是在編譯階段,可以隨時發現隱藏在其中的錯誤與缺陷,視圖模板也將變得更加清晰。

3.6 框架特點

之所以要重視基于.NET MVC框架的Web設計,主要是由于在基于.NET MVC框架的Web設計中,Web中的三層框架帶有一定的細分性,不僅可以讓結構更加清晰,還能進一步完備相關功能,進而讓系統變得更具有條理性與便捷性。其次,做好.NET MVC框架設計,可以讓顯示層與應用層相互分離,也可以進一步做好頁面修改,這也是實現單元測試,強化系統靈活性的有效方式。再者,在基于.NET MVC框架的Web設計實現以后,還可以最大程度的減少依懶性,由于前端頁面過于復雜,需要共享的代碼也很多,這就需要利用MVC模式完成分離等,這也是有效強化管理,做好修改的有效措施。最后,在基于.NET MVC框架的Web設計中,不僅可以讓數據訪問與業務邏輯區分開來,還可以強化系統的可移植性與持久性,尤其是在工廠模式的作用下,也可以進一步突出依賴倒置原則,且最大程度的減少數據訪問層給系統帶來的變化。

4 結束語

之所以要做好Web設計,主要是為了更好彌補原有設計中的不足,為實現這一目標,基于.NET MVC框架的Web設計成為重點,在這樣的Web設計完成以后,不僅有效提升了系統靈活性,還進一步提升了可維護性,同時也有效降低了代碼編寫量與復雜性,促進了開發效率早日完成,因此,應重視基于.NET MVC框架的Web設計。

參考文獻

[1]周文紅.基于 MVC框架的Web應用開發[J].計算機與現代化,2013(10):197-199.

[2]黃勝根,陳蜀宇.基于 MVC框架的干教系統的設計與實現[J].計算機技術與發展,2010(02):190-193.

[3]劉亞鵬,張征,俞婷.基于MVC多層架構的Web應用框架設計[J].微計算機信息,2011(07):169-171.

[4]許輝.基于 MVC框架的Web設計[J].計算機光盤軟件與應用,2014(16):266-267.

[5]黃東連.基于 MVC框架的Web開發研究[J].河南科技,2015(13):26-27.

[6]肖洋.基于的MVC框架的應用開發模式研究[J].電子技術與軟件工程,2016(02):63.

[7]滿高媛.MVC設計模式在框架中的應用研究[J].軟件導刊,2016(04):149-151.

篇2

關鍵詞:PHP;MVC;網頁設計

PHP是目前比較流行的網頁程序設計腳本語言。MVC(Model View Controller)是模型、視圖、控制器的縮寫,是一種程序設計規范,主要目的是分離模型和視圖,通過控制器管理所有的查詢和顯示過程,而且MVC框架編寫的程序更易于擴展,方便日后的功能擴展和維護工作。

1 數據模型設計

MVC基本框架需要3個文件,分別是test_model.php、test_controller.php、test_view.php,分別對應模型、控制器、視圖。

首先編寫test_model.php,創建test_model類,包含數據庫連接和查詢過程,本實例因篇幅原因簡單用變量代替復雜的數據查詢。內容如下:

//建立數據模型

class test_model{

protected $text1;

protected $text2;

public function __construct(){

$this->my_mvc();}

/*構建賦值過程,如果需要數據庫,那么可以在此連接數據庫*/

public function my_mvc(){

$this->text1 = "PHP";

$this->text2 = "MVC";}

//在此生成需要顯示在視圖中的一些數據內容

public function view_data(){

$view_text = "基于" . $this->text1;

$view_text.= "的" . $this->text2 . "框架";

return $view_text;}

}?>

2 控制器設計

其次編寫的是控制器test_controller.php部分,控制器部分包含通過實例化test_model并用其中的view_data方法得到的數據,并發送到視圖中。

//建立控制器

class test_controller{

function __construct(){

//加載數據模型

require_once "test_model.php";

$this->view_data();}

//顯示控制部分,通過數據模型獲取數據并顯示到視圖中

public function view_data(){

$data_model = new test_model();

/*通過數據模型類的view_data方法制作出來的數據放到變量中*/

$view_data = $data_model->view_data();

//通過加載視圖文件,將數據顯示到視圖中

require_once "test_view.php";}

}?>

3 視圖和首頁設計

視圖是顯示數據的部分,只需要使用html編寫規范設計網頁就可以了。而首頁index.php里加載并調用控制器就可以了。

test_view.php部分:

var _userid = '';var _siteid =2230;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =453; UrchinTrack();

index.php部分:

//加載控制器

require_once “test_controller.php";

//實例化控制器類

$test = new test_controller();

?>

至此,所有的代碼部分全部編寫完成,并通過了測試。本文中使用了變量形式的數據,如果需要連接到數據庫,那么須在數據模型文件中添加連接數據庫的代碼,如果建立更多的功能,可以先建立父類,再去建立具體功能子類繼承父類,這樣就可以更好的減少代碼冗余,提高編寫和維護效率。

參考文獻:

[1]斯克拉(美).PHP經典實例[M].中國電力出版社,2009.

篇3

關鍵詞:Struts,MVC,OA

 

為了提高應用系統中組件的重用能力和事務控制的靈活性,越來越多的開發人員采用MVC設計模式來分離系統的用戶界面、業務邏輯及業務控制[1~3]。Struts框架結構是MVC設計模式的一種具體實現,它為Web應用提供了一個通用的框架,使得開發人員可以把精力集中在如何解決實際業務問題上。此外,Struts框架提供了許多可供擴展和定制的技術,使得應用程序可以方便地擴展框架,更好地適應用戶的實際需求。本文首先介紹了MVC模式的基本思想及Struts的工作原理,并以網上辦公系統為例,詳細地說明了基于Struts框架進行信息管理系統開發的方法與思路。

1 Struts框架

Struts是Apache軟件基金的一個開源項目,是基于MVC設計模式構建Java Web應用程序的框架[4]。Struts框架在構建復雜的Web應用時,允許把應用程序的業務邏輯、控制邏輯和表現邏輯進行分離MVC,從而提高系統靈活性、重用性和可維護性,進而簡化Web應用程序的開發。

1.1 MVC模式

MVC是80年代Smalltalk中使用的一種軟件模式,目前已經被廣泛使用,是J2EE平臺上推薦使用的設計模式[5]。該模式將應用系統的輸入、處理和輸出按照Model、View和Controller的方式進行徹底的分離,因此應用系統就被分為了三個核心部分:模型、視圖和控制器,它們各自處理各自的事務。

(1)模型(Model):它代表的是應用的業務邏輯,可以對業務流程、狀態處理和業務規則的進行制定。業務流程的處理過程對其它部分來說是黑箱操作,模型接受視圖請求的數據,并返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。

(2)視圖(View):它代表的是應用的表示,是與用戶交互的部分。它一般進行數據的采集,并把數據交給其它部分處理。

(3)控制器(Controller): 它位于模型與視圖之間,控制著它們之間的交互處理過程??刂破靼芽蛻舳藖淼恼埱筠D換成模型能夠理解和執行的請求,并且根據請求選擇處理的模型,接著根據執行結果決定下一次顯示的視圖。

圖1描述了模型、視圖和控制器三者之間的關系。在應用系統開發過程中,通過該設計模式可以將業務邏輯、控制邏輯和表現邏輯分別用用不同的組件實現,以提高代碼的重用性和可維護性。

圖1 MVC模式圖

1.2 Struts工作原理

Struts是一個開放資源框架,是MVC設計模式的一個實現,由一組相互協作的類、Servlet以及JSP標簽庫組成。Struts 的體系結構將Model、View、Controller 分別映射到 Web 應用中的組件。在Struts中Model由Action和ActionForm對象來實現,所有的Action處理器對象都是Action類的子類,Action處理器對象封裝了具體的處理邏輯MVC,調用業務邏輯模塊,并且把響應提交到相關的View組件以產生響應。通過ActionForm組件對象實現了對View和Model基本的控制器組件是ActionServlet,但是對于業務邏輯的操作則主要由Action、ActionMapping和ActionForward這幾個組件協調完成。其中Action扮演了真正的業務邏輯的實現者,或者說是業務邏輯調用的接口;而ActionMapping和ActionForward則制定了不同業務邏輯或流程的運行方向[ 6],其工作原理如圖2所示。

圖2 Struts 的工作原理

2 網上辦公系統的實現

2.1 系統介紹

網上辦公系統是為幫助企事業單位內部員工更好地進行合作或更有效地工作而設計的,旨在實現企事業單位內部的無紙化辦公。由于不同單位所需辦公系統功能的不同,在此我們選取了網上辦公系統中通用的幾個模塊進行了實現,主要包括:文件夾、待辦事項、通訊錄、日程安排、文件柜、電子公告、用戶設置和系統管理等模塊。

2.2 系統實現

由于系統各功能的實現無論是在步驟上,還是在方法上都是大同小異,所以在此以用戶登錄為例詳細說明該系統的實現方法及思路。在登錄窗口當用戶輸入用戶名和密碼,點擊“登錄”按鈕,即向 Controller 發出一個 HTTP 請求。用戶輸入的表單參數將以LoginForm的形式封裝提交到 ActionForward。這個ActionForward調用相應的 login 執行業務邏輯,完成用戶登錄功能。以下是登錄功能的具體實現過程:

首先,編寫登錄相關的業務邏輯代碼,其具體代碼如下所示:

public int login(String uid,String pwd)throws OAServiceException{

Session session=null;

Transaction tx=null;

Query query1=null;

Query query2=null;

int result=1;

try {

session=HibernateUtil.getSession();

tx=session.beginTransaction();

query1=session.createQuery('from User u where u.uid=:vUid');

query1.setParameter('vUid',uid);

if(query1.uniqueResult()==null) return 1;

query2=session.createQuery('from User u where u.uid=:vUid andu.password=:vPwd');

query2.setParameter('vUid',uid);

query2.setParameter('vPwd',pwd);

User u=(User) query2.uniqueResult();

tx.commit();

return((u==null)?2:3);

} catch (Exception e) {

rollBack(tx);

}finally{

closeSession(session);}

return result;}

然后,編寫登錄要用到的ActionForm類:

package com.lanyu.oa.form;

……

public class LoginForm extends ActionForm {

private String uid;

private String password;

……

public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {

ActionErrors errors=new ActionErrors();

if(uid.length()<1)

errors.add(ActionErrors.GLOBAL_ERROR,newActionError('errors.uid.required'));

if(password.length()<1)

errors.add(ActionErrors.GLOBAL_ERROR,newActionError('errors.password.required'));

return errors;}

}

接著,編寫登錄相關的Action類以及相應的方法,登錄相關的Action類為com.lanyu.oa.action.UserAction.java,以下是完成登錄功能的代碼片斷:

public ActionForward login(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,HttpServletResponse response) {

ActionForward forward=null;

String msg=null;

Useru=null;

intresult=0;

LoginForm form=(LoginForm) actionForm;

String uid=form.getUid();

String pwd=form.getPassword();

try {

result=service.login(uid,pwd);

u=service.getUser(uid);

} catch (OAServiceException e) {}

if(u==null)result=2;

forward=processResult(result,msg);

return forward;

}

最后,在配置文件中添加與登錄相關的配置。具體步驟如下:

(1) 在Struts的配置文件中找到<form-beans>標簽MVC,在此標簽下添加子標簽<form-bean>。其具體內容如下:

<form-beans>

……

<form-bean name='LoginForm' type='com.lanyu.oa.form.LoginForm'/>

……

</form-beans>

(2) 在Struts的配置文件中找到<ActionMappings>標簽,在此標簽下添加<action>子元素以及相關的局部<forward>標簽。其具體內容如下:

<actionpath='/User/login' parameter='method' type='com.lanyu.oa.action.UserAction'

name='LoginForm'input='/login.jsp' scope='request'>

<forward name='success' path='main.page' redirect='true'/>

</action>

(3)由于本系統中使用了tiles,因此還得在tiles-defs.xml文件中添加相應的配置。

登錄模塊的運行界面如圖3所示,如果登錄成功,則進入系統,系統登錄成功的主界面如圖4所示。

圖3 用戶登錄界

圖4 系統主界面

3 結束語

Struts作為一種有效的進行Web應用開發的框架,充分利用了MVC模式的優點。應用Struts框架構建網上辦公系統很好地實現了業務邏輯與表示邏輯的分離,大大簡化系統開發的難度。尤其是各層邏輯組件的同時開發,縮短了開發周期,其靈活的、大量豐富的標記庫語言大大提高了開發效率,而且應用Struts框架構建的Web應用系統,具有良好的可重用性、可維護性和可擴展性。

參考文獻

[1]石海鵬.基于MVC模式的J2EE應用研究與開發:[碩士學位論文]. 江西:江西師范大學, 2004.

[2]馬黎明.基于J2EE平臺的Web應用系統研究:[ 碩士學位論文]. 武漢:武漢理工大學, 2004.

[3]孫衛琴.精通Hibernate:Java對象持久化技術詳解[M]. 北京:電子工業出版社, 2005.9

[4]Erich Gamma. J2EE構建企業系統[M]. 北京:清華大學出版社, 2001

[5]James Holmes著, 孫燕等譯. Struts程序員查詢辭典[M]. 北京:中國鐵道出版社, 2005

[6](美)Ted Husted. 實戰Struts[M].北京:機械工業出版社,2005.5

篇4

隨著互聯網寬帶技術應用的成熟,以及物流和支付系統的完善,電子商務成為互聯網普及應用的主流,影響著千家萬戶的生活和經濟行為,并日益成為社會商業活動的重要形式。因此,各行業均希望可以快速展開網上營銷渠道。新形式下,電商網站開發人員如何縮短開發周期,進一步提高工作效率,是每一個程序員所面臨的問題。各大WEB框架的出現,使得電商網站服務器端邏輯的設計非常便利,利用它進行網站的開發,可以節省很多的時間和精力。本文基于Spring MVC來構建一個電子商務網站,希望可以對讀者學習和使用Spring MVC建站產生一些幫助。

2 網上電商平臺Estore(Online electric business

platform estore)

2.1 Estore簡介

Estore是采用Java技術設計開發的網上電子商務平臺,采用了Spring MVC3、Hibernate3和Freemarker相結合的技術架構。繼承了Java高效、跨平臺、穩定且安全等多方面的優點[1],能夠支持Oracle、Sqlserver、Mysql等數據庫,統一在后臺管理網站的模板,用戶可利用標簽自定義顯示內容和方式。

2.2 Estore的運行環境

Estore原則上支持全系列JAVA運行環境、數據庫,主要使用以下環境:

(1)WEB服務器:Weblogic、Tomcat、WebSphere、JBoss等。

(2)數據庫服務器:Oracle、Mysql、SqlServer、DB2等。

(3)操作系統:Windows、Linux、Unix等。

3 基于Spring MVC的電商平臺的設計與開發

(The design and development of electric business

platform based on the spring MVC )

3.1 Spring MVC簡介

3.1.1 Spring MVC架構

Spring MVC的整體架構如圖1所示[2],視圖層采用Html或Jsp實現;控制層采用Servlet實現,整個框架采用同一個Servlet,以實現請求的中轉;模型層采用Java實現,主要決定用來做什么;在模型層后面添加了一個DAO,目的是將決定做什么和具體怎么做分開。

圖1 Spring MVC的架構

Fig.1 The architecture of spring MVC

整個Web框架大致的流程是:首先客戶端發送請求,提交Html或Jsp頁面給中轉器(Servlet);中轉器按照客戶的請求,選擇相應的模型層,即Logic進行相應的邏輯處理;如果需要使用數據庫,則通過DAO進行相應的數據庫操作。

3.1.2 Spring MVC重要組件

圖2 Spring MVC的組件

Fig.2 The component of spring MVC

Spring MVC的組件如圖2所示[3]。

(1)Spring MVC將所有的請求都提交給DispatcherServlet,它會委托應用系統的其他模塊負責對請求進行真正的處理工作。

(2)DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller。

(3)DispatcherServlet把請求提交到目標Controller。

(4)Controller進行業務邏輯處理后,會返回一個ModelAndView。

(5)Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象。

(6)視圖對象負責渲染并返回給客戶端。

3.2 Hibernate框架

3.2.1 Hibernate簡介

Hibernate是一個開源免費的Java包,它使得程序與數據庫的交互變得十分容易,更加符合面向對象的設計思想[4]。Hibernate使開發者可以專注于應用程序的對象和功能,而不用關心如何保存它們或查找這些對象。

在對SQL語句完全不了解的情況下,使用Hibernate仍然可以開發出優秀的包含數據庫訪問的應用程序。

3.2.2 Hibernate運行過程

圖3 Hibernate運行過程

Fig.3 The running process of hibernate

Hibernate的運行過程如圖3所示。

應用程序先調用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息,并用這些信息生成一個SessionFactory對象,然后從SessionFactory對象生成一個Session對象,并用Session對象生成Transaction對象??赏ㄟ^Session對象的get()、load()、save()、update()、delete()和saveOrUpdate()等方法對PO(persistent object持久對象)進行加載、保存、更新、刪除等操作。

在查詢的情況下,可通過Session對象生成一個Query對象,然后利用Query對象執行查詢操作:如果沒有異常,Transaction對象將提交這些操作到數據庫中;如果有異常,則執行回滾操作。

3.3 Freemarker簡介

FreeMarker是一個模板引擎[5],它由Java語言編寫而成,基于模板來生成文本輸出。FreeMarker與Web容器沒有關系,即Web運行時,并不知道HTTP或Servlet。它不僅能夠用于表現層的實現,而且還可以用于生成Xml、Jsp或Java等。FreeMarker允許Java servlet保持圖形設計與應用程序邏輯的分離,這是通過在模板中封裝Html完成的。模板用Servlet提供的數據動態地生成Html。模板語言是直觀且強大的,編譯器的速度快,輸出接近靜態HTML頁面的速度。

雖然FreeMarker具有一些編程的能力,但通常由Java程序負責要顯示的數據,由FreeMarker生成頁面,通過模板來顯示數據。

下面是用Freemarker來做的一個顯示頁面:

 

[@post_list]

[#list tag_list as post]

[#list post.types as tlist]

[#if tlist.name == "首頁"]

[/#if]

[/#list]

[/#list]

[/@post_list]

3.4 按Spring MVC框架分層設計電商平臺

3.4.1 Dao層

Dao層分析模塊所要涉及的表,確定表之間的關系,編寫Hibernate Mapping文件和持久化類,它使用Hibernate連接數據庫、操作數據庫(增刪改查)。根據模塊需要的各種持久化操作,確定對應的方法,據此來編寫Dao接口和實現類。

3.4.2 Entity層

Entity層是實體類層,也屬于MVC中的model層,它的主要功能是把用戶提交過來的參數封裝成一個對象給Dao層也就是Hibernate操作。

3.4.3 Service層

引用對應的Dao數據庫操作,在這里可以編寫自己需要的代碼(比如簡單的判斷、校驗等操作)。

3.4.4 Action層

引用對應的Service層,在這里依據配置文件,跳轉到指定的頁面,當然也能接受頁面傳遞的請求數據,也可以做些計 算處理。

3.4.5 顯示層

一個或多個HTML頁面為模型提供數據顯示,HTML頁面主要使用HTML標記和Freemarker標簽來顯示數據。

綜上所述,各層之間的關系為:action調用service中的方法,service調用dao中的方法,調用時的參數使用entity傳遞,最后把結果顯示在HTML界面,以響應用戶請求。

4 Estore的個性化功能(Personalization capabilities

of estore )

4.1 Estore標簽的執行流程

標簽是Estore中的一個重要概念,利用它可以執行許多操作,比如對搜索結果分頁、獲得商品品牌的列表、獲得商品子欄目的列表等,它的執行流程如下:

(1)訪問某個頁面(如:頁頭導航欄.html),瀏覽器執行解析代碼,執行到標簽時跳轉到后臺estore-context.xml文件。

(2)estore-context.xml文件中,假如有,在里面找標簽對應的class文件(如shop_Category),再找對應的*.java文件。

(3)到后臺執行CategoryListDirective類中默認方法execute(如:[@shop_Category parentId=category.id],參數:父類別ID parentId)。

(4)CategoryListDirective類鏈接數據庫,獲取目標數據并放入Map集合:

如:Map origMap = DirectiveUtils.addParamsToVariable(env, paramsWrap)。

(5)將獲取的目標數據返回給前臺,通過標簽展示:

[@shop_Category]

首頁

[#list tag_list as ctg]

${ctg.name}

[/#list]

[/@shop_Category]

4.2 制作“商業廣告位”

一幅色彩絢麗、形象生動的廣告作品,能以其非同凡響的美感力量增強廣告的感染力,使消費者沉浸在商品和服務形象給予的愉悅中,使其自覺接受廣告的引導。在Estore平臺上,可以為網站的首頁添加一個“商業廣告位”,具體步驟如下:

(1)在系統后臺的“輔助”中的菜單“廣告版位”,添加一個“版位”,(如:頁中廣告)。

注意:記錄下此時的“ID”(如ID=6)。

(2)“廣告管理”中,修改“頁中廣告”,選擇圖片之后,改一下圖片地址,去掉“/u”(如:把‘/u/201403/231829044ug5.jpg’變為‘/201403/231829044ug5.jpg’)。

(3)在“\WEB-INF\t\store\tpl\include\”下,新建文件“頁中廣告位.html”,內容如下:

注意:此處的ID,其值取自第(1)步中的ID。

(4)在“首頁”相應的廣告位置,加入如下語句:[#include "../include/頁中廣告位.html"/]。

至此,即在網站首頁添加了一個“商業廣告位”,根據客戶的需求,只需要更改后臺的廣告圖片,即可在網站首頁看到客戶的廣告宣傳。

4.3 Estore的后臺處理流程

當用戶剛接觸Estore時,可能對其后臺的處理流程有點頭痛,不知道應該如何學習,常常會感覺到無從下手,本文以訪問后臺的主界面為例,特在此做出一個簡要的介紹,用戶可以按照以下步驟來了解其處理過程:

(1)用戶查看瀏覽器端的訪問請求路徑,看要訪問資源的后綴名,如“localhost:8080/storeOracle/eadmin/estore/index.do”的后綴名為“*.do”。

注意:“eadmin/estore/”是虛擬訪問路徑,它在web.xml中設置。

(2)web.xml文件的重要標簽:

 EStoreAdmin

 /eadmin/estore/*

注意:①因為擴展名為“.do”,所以找到值為“/eadmin/estore/*”的。

②“eadmin/estore/”是虛擬訪問路徑,在此處設置。

(3)去所有的action文件里找到相應“@RequestMapping”的value等于“index.do”的方法,看該方法返回什么字符串(如:“login”)。

(4)去estore-servlet-admin.xml中找到id="freemarkerViewResolver"的bean,該bean中name分別為“prefix”、“suffix”的標簽的value的值,正好和步驟(3)中的“login”組成文件名“/estore _sys/login.html”;系統將此頁面返回,用戶即可直接訪問。

(5)登錄頁login.html會向名叫“index.do”的action發送請求,按照步驟(3)和(4)操作后,可以直接訪問文件“/estore_sys/index.html”。

(6)文件“/estore_sys/index.html”里嵌套有“主體框架”:

(7)在main.html里,又有左右兩部分frame:

 

 

至此,Estore系統后臺的主界面全部形成。

5 結論(Conclusion)

通過研究可以證明,利用Spring MVC可以快速地開發一個具有良好架構的電子商務網站,并且易于維護、支持擴展,這大大地提高了建站的效率,節省了大量的時間和精力。同時,電子商務網站的開發還應考慮安全支付、快速物流等問題,這是今后需要研究的對象。

參考文獻(References)

[1] Java 2 Platform,Enterprise Edition Specification Version l.2[EB/0L].java.sun.com/J2ee/docus.Htm,2014-05-23.

[2] 陸榮幸,等.J2EE平臺上MVC設計模式的研究與實現[J].計算機應用研究,2003,3:144-146.

[3] 何成萬,余秋惠.MVC模型2及軟件框架Struts的研究[J].計算機工程,2002,6:274-281.

[4] 高昂,衛文學.基于Hibernate與Struts框架的數據持久化應用研究[J].計算機應用,2005,12:2817-2820.

[5] 冷威龍.Freemarker[EB/OL].baike.baidu.com/view/1278430.htm,2014-05-23.

作者簡介:

岳紹敏(1988-),男,碩士研究生在讀.研究領域:智能系統.

王國春(1978-),男,碩士,講師.研究領域:軟件工程與智能系統.

篇5

關鍵詞:MVC 模型數據綁定 數據篡改

中圖分類號:TP393.4 文獻標識碼:A 文章編號:1007-9416(2016)04-0000-00

1 概述

.NET MVC框架的出現對發展起到了巨大的推動作用,它顛覆了傳統通過CodeBehind技術將程序界面aspx文件與邏輯代碼vb文件或cs文件分離,由于基于Model(模型)、View(視圖)和Controller(控制器)的架構模式,使得開發者能夠更加清晰地表達業務邏輯。模型是應用程序中用于處理應用程序數據邏輯的部分,通常模型對象負責在數據庫中存取數據。視圖是應用程序中處理數據顯示的部分,通常視圖是依據模型數據創建的??刂破魇菓贸绦蛑刑幚碛脩艚换サ牟糠?,通??刂破髫撠煆囊晥D讀取數據,控制用戶輸入,并向模型發送數據[1]。在Web開發中,表單的應用是十分廣泛的。用戶的注冊、登錄、修改信息等業務都需要通過表單來實現,表單的內容則會被提交到服務端進行處理,因此,表單數據的安全性極為重要。這里所說的安全性包括兩個層面,一個層面是數據本身是否符合指定的范圍或格式,另外一個層面是數據是否被篡改。本文討論的是后者,即表單數據如何防止被篡改[2]。

2 表單模型數據綁定和篡改

.NET MVC框架的應用給我們帶來了很多便利,數據模型的綁定讓我們快速形成視圖,而不必糾結HTML界面和業務邏輯之間來回傳值。Html.TextBoxFor、Html.DropDownListFor等方法為模型和HTML表單控件提供了雙向綁定,這種綁定無疑把我們從Request和HTML標簽中解放出來。圖1是MVC框架中各組件之間的關系,其中模型和視圖之間的關系是通過綁定來實現,模型信息的改變通過綁定傳遞數據到視圖;視圖則通過對表單進行操作從而獲取或修改模型信息。

一般情況下,上述模型數據的綁定是相對安全的,可以通過表單的客戶端驗證和服務端驗證進行控制。但在有些情況下,篡改的表單數據通過了表單客戶端驗證和服務端驗證,這樣會對系統的安全產生很大的威脅。

圖2所示通過將模型綁定數據到表單控件,用戶名被設置成為不可修改,后臺用戶名為主鍵,在此,只能對用戶姓名和用戶類型進行修改,用戶名對應的表單控件代碼在紅色矩形框中標識。

通常情況下,上述修改用戶姓名和用戶類型是安全的,但通過Chrome瀏覽器的開發者工具、Firebug頁面調試工具等可以對頁面內容進行篡改。如圖3所示,通過工具對用戶名表單控件進行修改,去掉表單控件的disabled屬性,將用戶名的value修改為lisi。這樣以來,表單提交的數據修改的是lisi用戶的信息。通過這種方式,無形中借用了zhangsan的權限修改了lisi的信息,這種潛在的“漏洞”給用戶數據帶來的巨大的威脅。

3 處理方法

上述問題的根本原因在于客戶端數據的不可信性。解決的辦法可以在進入用戶信息編輯表單時將用戶名記錄到Session中,這樣即使客戶端對用戶名進行修改了,也不會對Session中的用戶名進行修改,最后提交表單的時候,我們只是獲取表單的姓名和用戶類型信息,用戶名從Session中讀取,表單中的用戶名只是給客戶端起到一個展示的作用。

4 結語

在日益復雜的Web應用中,各種各樣的框架以及技術給我們的開發工作帶來了極大的便利,然而在獲取這些便利的同時,我們更應該思考應用技術過程中隱含的“副作用”。在快速構建Web應用程序的過程中,客戶的體驗、數據的安全性、應用的穩定性等都是不能忽視的方面。

參考文獻

[1] Jon Galloway,Phil Haack,Brad Wilson,K. Scott Allen 著.孫遠帥 譯. MVC 3高級編程[M].清華大學出版社,2012.

[2] 張炳帥 著.Web安全深度剖析[M].電子工業出版社,2015.

篇6

關鍵詞:MVC;MVP;MVVM

1MVC框架

MVC(Model View Controller)是把軟件系統分為模型、視圖、控制器3個基本部分。M是指數據模型,V是指用戶界面,c則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。

圖1為Java實現的MVC模型,Java MVC模式是將Servlet,Jsp和JavaBean結合起來的技術。Servlet適合數據處理,JavaBean用于模型,而Jsp適合顯示。這個模式充分發揮了每項技術的優點。

在早期的WEB開發中,因為業務比較簡單,并沒有這3層的劃分。用戶數據的呈現及輸入的接收、封裝、驗證、處理、以及對數據庫的操作,都放在Jsp頁面中。隨著業務越來越復雜,需要考慮更好的利用OOP來解決問題。于是便把業務邏輯抽取出來并形成與顯示和持久化無關的一層,能夠讓業務邏輯清晰,產品更便于維護。這就是SUN當初倡導的JSP Model1開發方式。

Modell模式的實現比較簡單,適用于快速開發小規模項目。但從工程化的角度看,局限性非常明顯:JSP頁面身兼View和Controller2種角色,將控制邏輯和表現邏輯混雜在一起,從而導致代碼的重用性非常低,增加了應用的擴展性和維護的難度。

Jsp Model2中引入了MVC框架,使用了3種技術JSP、Servlet和JavaBeans,Jsp負責生成動態網頁,只用做顯示頁面。Servlet負責流程控制,用來處理各種請求的分派。JavaBeans負責業務邏輯,對數據庫的操作。

大部分Web應用程序都是用像ASP,PHP,或者JSP來創建的。造成了數據庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一起。由經驗的開發者會將數據從表示層分離開來,交由后臺處理,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。而使用MVC框架,應用程序被分成3個核心部件:模型、視圖、控制器,各自處理自己的任務。盡管使用MVC框架需要付出一些額外的工作,但是給人們帶來的好處是無庸質疑的。

視圖(View)代表用戶交互界面,通常由網頁組成。在早期WEB開發中,網頁的數據嵌入在頁面中,無論頁面打開多少次,頁面內容也不會發生變化,這種頁面稱為靜態網頁。而MVC框架中View視圖中的數據來源于數據庫,隨著數據庫數據的變化,頁面中的數據也會隨著發生改變,稱之為動態網頁,現在比較流行的動態網頁開發技術由Jsp、Asp和Php。Java的MVC模型就是采用的Jsp動態開發技術,因此View的頁面由jsp網頁組成。在View層只涉及數據的顯示,和數據的采集,不涉及視圖的業務處理。比如最常見的登錄頁面,登錄視圖只是把登錄的信息進行收集并提交,不對登錄的信息做判斷。

模型(Model):就是業務流程/狀態的處理以及業務規則的制定。在MVC的3個部件中,模型擁有最多的處理任務。視圖中的數據由Model來提供,當需要改變視圖中的數據時,不需要修改WEB頁面,只需要修改相應的Model即可。MVC框架中Model層的主要關注點是如何把請求的數據自動裝配成Action所需要的bean,除此外,框架Model層還可以提供復合bean自動裝配、輸入校驗、本地化及國際化、字符集編碼轉換、多重輸出等功能。比如上述的登錄系統,就是由Model層來完成登錄賬號和密碼的判定。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。

控制(Controller)接受用戶的輸入并調用模型和視圖去完成用戶的需求。Java MVC中的控制層由Servlet來實現??刂茖硬⒉粚祿鎏幚?,而是根據視圖的提交要球,來決定調用相對應的模型。比如上述的登錄系統,控制器的作用就是接收View層提交的信息,并把這個信息傳給對應的Model去處理,然后把處理后的結果,再返回給View層。

MVC的優點:(1)可以為一個模型在運行時同時建立和使用多個視圖。變化-傳播機制可以確保所有相關的視圖及時得到模型數據變化,從而使所有關聯的視圖和控制器做到行為同步。(2)視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據需求動態的打開或關閉、甚至在運行期間進行對象替換。(3)模型的可移植性。因為模型是獨立于視圖的,所以可以把一個模型獨立地移植到新的平臺工作。需要做的只是在新平臺上對視圖和控制器進行新的修改。(4)潛在的框架結構??梢曰诖四P徒贸绦蚩蚣?,不僅僅是用在設計界面的設計中。

MVC的不足體現在以下幾個方面:(1)MVC并沒有很明確的定義,所以完全理解MVC并不是很容易。并且內部實現原理比較復雜和多樣,對于新手來說需要花費一些時間去思考。(2)視圖與控制器的可接插性,造成模型和視圖的分離,這樣也給調試應用程序帶來了一定的困難。(3)MVC的實現比較復雜,并不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模并不是很大的應用程序通常會得不償失。

2MVP框架

MVC(Model-View-Controller,模型-視圖-控制器)模式是80年代Smalltalk-80出現的一種軟件設計模式,后來得到了廣泛的應用,其主要目的在于促進應用中模型、視圖、控制器間的關注的清晰分離。MVP(Model-View-Presenter,模型視圖-表示器)模式則是由IBM開發出來的一個針對C++和Java的編程模型,大概出現于2000年,是MVC模式的一個變種,主要用來隔離UI、UI邏輯和業務邏輯、數據。

Model-View-Presenter旨在應用程序分層和提高測試效率,主要目標是將顯示邏輯與業務邏輯分離,正如設計面向對象程序中創建松散耦合并可重用的對象。MVP的另一個目標是提高針對View的測試效率。編寫依賴Session,ViewState,AJAX,HTML或web控件和業務實體的單元測試類較為復雜,因此將各視圖的顯示邏輯保留在ASPX/ASCX文件類中,并將業務邏輯從中分離出來放在相應的類中,在MVP中Presenter充當視圖和業務邏輯的緩沖層。

MVC和MVP的區別:在MVP里,Presenter把Model層和View層進行了完全的分離,View并不直接使用Model,主要的業務邏輯在Presenter里實現。而且,Presenter與具體的View是沒有直接關聯的,而是通過定義好的接口進行交互,從而使得在變更View時候可以保持Presenter的不變,達到了重用的效果,而在MVC中View會從直接Model中讀取數據而不是通過Controlle如圖2所示。

從圖中可以看到,在MVC里,View是可以直接訪問Model的,View里會包含Model信息,因此不可避免的還要包括一些業務邏輯。在MVC模型里,更注重業務的邏輯,也就是Model的不變,而針對Model,則有不同的顯示及View。所以,在MVC模型里,View是依賴于Model的,但是Model不依賴于View。并且,如果有一些業務邏輯在View里實現了,則導致要更改View也是比較困難的,因為View中的業務邏輯是無法重用的。

在MVP模式里,View只有簡單的Set/Get的方法,用來輸入和設置界面顯示的內容,除此就不應該有更多的內容,絕不容許直接直接訪問Model,而這就是與MVC很大的不同之處。

MVP的優點:(1)View和Model實現了完全分離,可以修改View而不影響Model。(2)業務邏輯的處理更加集中,便于控制。(3)多個View可以共用一個Presener,便于代碼的重用。(4)業務邏輯集中在Presenter中,便于進行單元測試。

MVP的缺點:由于對View的控制放在了Presenter中,造成了View和Persenter的交互會過于頻繁。這樣會增加View和Presenter的耦合性,一旦View發生了變化,Presenter也需要進行變化。比如,原來的Html網頁顯示的是Word文檔,但是新求需要將Word文檔轉換為PDF文檔顯示,那么就需要更改View和Presenter。

3MVVM框架

MVVM是3層架構,M層(Model實體層)、V層(View表示層)、VM層(ViewModel層,對Model層進行CRUD進行操作,同時對V層提供數據綁定)。對這種模式的實現,大部分都是通過在view層聲明數據綁定來和其他層分離的,這樣就方便了前端開發人員和后端開發人員的分工,前端開發人員在html標簽中寫對Viewmodel的綁定數據,Model和Viewmodel是后端開發人員通過開發應用的邏輯來維護這兩層。

最近幾年,MVVM模式在Javascript中開始有人實現,目前比較成熟的框架有KnockoutJS,Avalon MVVM和Knockback.js,原理如圖3所示。

(1)infoChannel:信息通道,主要用于向后臺發起數據請求。(2)dataChannel:數據通道,主要用于存儲從后臺獲取到的數據。(3)moleManage:數據操作,主要用于操作數據通道中的數據,如crud操作。(4)modulePool:數據倉庫,主要存儲后臺返回的數據。(5)crudStorePool:crud實例池,增刪改的數據,在持久化到數據庫之前,都會先存在于此池中。(6)action:后臺數據處理及數據庫訪問模塊

執行流程如下:(1)infoChannel通過調用服務器端action獲取數據庫數據。(2)infoChannel把獲取的數據放到內存中的modulePool中。(3)dataChannel從modulePool中取數據,并傳遞到View端。(4)View端的數據通過moleManage取出。(5)moleManage把取出的數據放到內存的crudStorePool中。(6)通過infoChannel把crudStorePool中的數據傳遞到后臺,實現數據的持久化操作。

ViewModel的具體應用:(1)在前端開發中如需初始化某一模塊的數據可以調用dataChnannel中的initViewData(viewld,dataStoreParam)方法。(2)如需查詢某一節點的數據集,可以調用dataChnannel中的getDataByPath(viewId,path)。(3)如需進行crud操作,可以調用moleManage中的相關方法。

ViewModel解決的問題:(1)向后臺的多請求操作改為通過接口統一調用。(2)是一個前后端通信的中間件,具有可插拔性,適用于文檔型及關系型數據庫。(3)實現了單例模式,避免多個實例操作同一個對象。(4)緩存大數據,避免頻繁向后臺請求數據。

4Model層

Model層同其他的MVC框架一樣,Model代表特定領域的數據或者應用所需的數據,一個典型的特定領域的數據如用戶信息,或者一部電影的信息。

Model僅僅關注數據信息,不關心任何行為;不格式化數據或者影響數據在瀏覽器中的展現;格式化數據是View層的任務,同時業務邏輯層被封裝在Viewmodel中,用來和Model進行交互。在Model層做的一個比較意外的行為是對數據的驗證,比如當用戶輸入用戶名的時候,判斷用戶名的格式是否正確,是否有非法字符等。Model基本是按照上面的定義來實現的,但是會有通過ajax調用服務器服務來進行讀寫Model數據。

MVVM框架是衍生于MVC框架的,兩者之間的最大區別在于,MVC框架中的Controller是由是由高級編程語言實現的,比如用Java實現的MVC框架,Controller是由servlet實現,而在View中,也會用到部分的Jsp代碼;而MVVM框架中的ViewModel則是由腳本語言Javascript實現,在View界面將不會用到Jsp代碼,從而實現了前端和后臺的完整分離。

優點:(1)MVVM使并行開發更加容易,使前端開發和后端開發人員互不影響。(2)抽象化View層,減少了代碼中的業務邏輯。(3)ViewModel比事件驅動更容易測試。(4)ViewModel的測試不用關心UI的自動化和交互。

缺點:(1)對于簡單的UI,使用MVVM有點太重。(2)聲明式的數據綁定不利于調試,因為命令式的代碼可以和容易的設置斷點,這種模式就不利于設置這樣的斷點。(3)在不挑剔(non-trivial)的應用里數據綁定可以創建大量的簿記(book-keeping)。(4)在大的應用中,在獲取大量的概要(generalization)前很難設計視圖模型層。

篇7

【關鍵詞】PHP ThinkPHP MVC 電子商務 架構設計

1 紅酒交易平臺的需求分析

紅酒交易平臺是銷售酒類、培訓、器皿、酒窖定制服務的電子商務平臺,支持PC端瀏覽器、手機端瀏覽器、微信端以及Android端和iOS端。

本文從功能性需求和非功能性需求兩個方面進行需求分析。

1.1 功能性需求分析

本平臺有三個主要功能和一個主要流程:品類管理、促銷管理、訂單管理和購物流程。

1.1.1 品類管理

主要是管理商品的分類和商品管理。

1.1.2 促銷管理

支持各種促銷手段:滿額贈送、限時搶購、買N送N、特價促銷等。

1.1.3 訂單管理

平臺收到訂單后,如果是已經支付的訂單或者是貨到付款的訂單,備貨后輸入物流單號和物流公司發貨。用戶如果退貨,平臺允許退貨并收到用戶退貨后,退款給該用戶。

1.1.4 購物流程

用戶瀏覽商品并加入購物車,如果該商品符合促銷條件,自動在購物車放入贈品,用戶確認訂單并支付,等待平臺發貨,用戶收到貨物后確認到貨并評價。

1.2 非功能性需求分析

1.2.1 安全要求

對于需要登錄后才能訪問的頁面要禁止非法訪問等。

1.2.2 性能要求

網絡正常的情況下,大于2MB/秒,1000人以下并發訪問頁面打開時間最多不超過5秒。

2 紅酒交易平臺MVC框架的選擇

通過技術平臺選型,考察 MVC、Struts2、Spring MVC、ThinkPHP、Laravel等多個MVC框架后,結合技術團隊能力、國內流行程度等因素,將 MVC、Struts2、ThinkPHP作為備選技術方案。ThinkPHP中的MVC提供了一種敏捷開發的手段,使得開發者能夠迅速地開發出穩定的企業級網站。ThinkPHP在中小型應用中,學習成本最低、開發效率最高,所以在國內PHP MVC框架應用中占據了將近50%的市場份額。本平臺是一個中等規模的網站,根據前述非功能性需求分析得出,并發訪問量要求不高,且用戶預算低、開發周期短,所以決定平臺采用ThinkPHP框架。

3 紅酒交易平臺的架構設計

3.1 平臺架構的設計

為了進一步壓縮成本,縮短開發時間,從架構設計上既要滿足前述用戶需求,又要減少開發工作量。因此平臺通過共用控制器和模型,采用多視圖的方法滿足用戶PC端、手機端、微信端瀏覽本平臺的需求,由于Anroid端和iOS端采用Hybrid APP混合框架,內嵌了瀏覽器,所以本架構也能給予很好的支持。前端則采用Bootstrap框架進行快速頁面布局和前端編程。Bootstrap是最受歡迎的 HTML、CSS 和 JS 框架,用于開發響應式布局、移動設備優先的 WEB 項目。根據需求分析,本平臺部分技術架構設計如圖1所示。

限于篇幅,本架構主要展示了平臺Home前臺的架構設計,前臺Home和后臺Admin共用Common\Model,前臺PC端View和移動端MobileView共用了前臺Controller,從而減少了開發冗余,提高了代碼復用率。

3.2 前臺控制器基類的實現

FrontController是前臺控制器的基類,只有一個方法_initialize,繼承該基類的前臺控制器都會執行該方法。_initialize方法通過ismobile函數判斷,如果是手機端或者微信端瀏覽,則通過C(‘DEFAULT_V_LAYER’,’MobileView’)函數將默認視圖層從View目錄改成MobileView目錄,從而改成適合手機瀏覽的網頁,而控制器類和模型類無需修改。用戶沒有登錄,即判斷$_SESSION[‘USER’]為空,如果用戶訪問了需要登錄才能訪問的控制器方法,使用$this->redirect方法將鏈接重定向登錄方法,強制用戶登錄。

4 結束語

MVC輕量級ThinkPHP框架,基于面向對象的思想,結合使用了Ajax技術,使整個系統功能清晰明了。本平臺選擇ThinkPHP框架進行架構設計,采用多個視圖共用一個控制器方法的方式支持多終端設備瀏覽器以及Hybrid APP混合框架里的內嵌瀏覽器,滿足了紅酒交易平臺的功能性需求和非功能性需求,提高了開發效率、縮短開發工期并節約開發成本,具有較好的技術推廣價值。

參考文獻

[1]徐誠斌,王金平.MVC在ThinkPHP框架中的應用研究[J].信息與電腦:理論版,2011(03):160-160.

[2]Bootstrap中文W.Bootstrap中文文檔[EB/OL]./, 2014-10-31/2016-12-7.

[3]許燕.基于ThinkPHP框架的校園交易平臺的設計與實現[J].信息技術與信息化,2016(07):34-37.

作者簡介

陳棟良(1975-),男,江蘇省宜興市人。碩士學位?,F為蘇州工業園區服務外包職業學院講師。研究方向為軟件技術。

篇8

關鍵詞: MVC;多層架構;素質教育;課程管理;管理系統

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)30-6804-02

按照教育部、教育廳的相關要求,各高職院校以學生素質教育課程改革為突破口,面向全體學生,結合專業教育,積極探索高職素質教育的新途徑、新方法,將素質教育融入人才培養全過程。因此,為配合學生素質教育課程改革,采用信息系統加強對素質教育的課程及實踐活動開設、教學任務分配、成績錄入等全過程進行管理勢在必行。

1 學生素質教育課程管理系統分析

根據學生素質教育課程實施工作的要求,學生素質教育管理系統的主要功能包括:課程信息管理、活動信息管理、選活動管理、任務分配管理、課程成績管理、系統管理等功能,系統功能結構如圖1所示。

2 學生素質教育課程管理系統設計

學生素質教育課程管理系統功能復雜,為了使得學生素質教育課程管理系統邏輯結構合理,提高軟件的開發效率,降低系統的維護成本,提升系統的可擴展性和可維護性,因此學生素質教育課程管理系統設計采用基于.Net的多層架構解決方案,WEB層采用了 MVC(視圖引擎為Razor)框架技術,視面組件方面使用了Telerik組件技術,JS框架采用強大的JQuery技術,服務層采用基于WCF技術的SOA框架,服務層采用基于技術的AOP框架,數據持久層采用基于Entity Framework技術的ORM框架。學生素質教育課程管理系統整體架構設計如圖2所示。

1)WEB層設計

系統WEB層采用 MVC框架技術設計。 MVC是微軟官方提供的MVC模式編寫 Web應用程序的一個框架,MVC主要用于表示一種軟件架構模式,它把WEB應用系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。

學生素質教育課程管理系統WEB層MVC框架中視圖部件使用Telerik組件技術及基于JQuery的JS框架技術實現了課程管理頁面、活動管理頁面等WEB頁面的展現??刂破鞑考饕幚碚n程管理、活動管理等頁面與服務器的交互操作,通過服務層調用課程管理、活動管理等服務進行數據處理。模型組件與實體類對應,主要封裝了系統中課程、活動、學生活動、課程任務、活動任務、課程成績等核心數據以及邏輯功能。

2)服務層設計

系統服務層采用基于WCF技術的SOA框架設計,WCF是.NET框架的一部分,是微軟發展的一組數據通信的應用程序開發接口,它能將不同的通訊方式整合在一起,提供一種統一的編程模型。

WCF通過配置文件定義服務以及消費服務完成服務端配置與客戶端配置。服務端配置主要完成服務節點的綁定,主要包含CourseServiceNode(課程服務節點)、ActivityServiceNode(活動服務節點)、StudentServiceNode(學生服務節點)、TeacherServiceNode(教師服務節點)、DepartmentServiceNode(部門服務節點)、StudentActivityServiceNode(學生活動服務節點)、CourseTaskServiceNode(課程任務服務節點)、ActivityTaskServiceNode(活動任務服務節點)等服務節點。客戶端配置主要完成客戶端終結點的屬性來連接系統服務終端結點的配置。

3)服務層設計

系統服務層是采用基于技術的AOP框架設計,它是.NET企業應用開發的應用程序框架,為業務對象提供面向對象編程的支持,通過IApplicationContext、IObjectFactory核心接口實現依賴注入(Ioc)功能。

在學生素質教育課程管理系統服務層設計中主要是完成CourseService(課程服務)、ActivityService(活動服務)、StudentService(學生服務)、TeacherService(教師服務)、DepartmentService(部門服務)、StudentActivityService(學生活動服務)、CourseTaskService(課程任務服務)、ActivityTaskService(活動任務服務)等服務的依賴注入并建立與服務節點的映射關系。

4)數據持久層設計

系統服務層是采用基于Entity Framework技術的ORM框架設計,Entity Framework是開發基于的ORM框架,它可以根據系統對象生成實體數據模型(EDM)、實體數據類及DAO數據操作類,借助實體數據模型和實體所承載的數據自動生成SQL語句,并實現數據自動持久化功能。

在學生素質教育課程管理系統系統數據持久層中實體數據模型文件為SQECEnites.edmx,主要用于描述實體類與數據庫對象的對應關系。系統中包含的主要實體類有:Course(課程)、Activity(活動)、Student(學生)、Teacher(教師)、Department(部門)、StudentActivity(學生活動)、CourseTask(課程任務)、ActivityTask(活動任務)等。系統對應的DAO數據操作類有:CourseDAO(課程數據操作)、ActivityDAO(活動數據操作)、StudentDAO(學生數據操作)、TeacherDAO(教師數據操作)、DepartmentDAO(部門數據操作)、StudentActivityDAO(學生活動數據操作)、CourseTaskDAO(課程任務數據操作)、ActivityTaskDAO(活動任務數據操作)等。

3 總結

學生素質教育課程管理系統開發中采用基于.NET的多層架構體系設計,在WEB層通過MVC框架技術實現了系統視圖層和業務層分離,從而降低了系統展示與業務邏輯的耦合性;在服務層采用基于WCF技術的SOA框架設計,降低了服務提供者和服務使用者的松散耦合性;在服務層采用基于技術的AOP框架設計,實現了對業務邏輯的各個部分進行隔離,降低了業務邏輯間的耦合度;在數據持久層采用基于Entity Framework技術的ORM框架設計,實現數據操作與數據庫的分離,降低了程序與數據庫間的關聯性。因此,在開發WEB應用系統中采用基于.NET的多層架構體系設計,可充分發揮每一層框架技術的優勢,提升系統各模塊的獨立性,提高系統開發效率及系統的易維護性、可用性和可伸縮性。

參考文獻:

[1] 涂剛,李建,劉華清,紀永玲,許子昊 MVC的研究[J].軟件工程師,2010(8).

[2] 方柯.基于 MVC框架的Web應用開發研究[J].電腦知識與技術,2010(22).

[3] 張計龍.基于改進MVC的高校人事管理系統[J].計算機工程,2004(8).

[4] 王炯煒,胡宏偉.基于LINQ的三層體系結構應用[J].科技信息:學術研究,2008(21).

[5] 梁西陳,朱水源.基于.NET的高職院校教師信息管理系統研發[J].宿州教育學院學報,2009(1).

篇9

關鍵詞:電子商務;Struts 2;作用

中圖分類號:F49文獻標識碼:A 文章編號:1672-3198(2012)03-0233-02

1 Struts 2的由來

隨著軟件技術和Internet的迅猛發展,以J2EE技術體系為代表的分布式對象技術為企業構造新的基于Internet的電子商務平臺提供了技術支持。J2EE規范定義了一個用于簡化分布式企業級應用開發與部署的基于組件的模式,它提供了一個多層次的分布式應用模型和一系列開發技術規范,為搭建具有可伸縮性、靈活性、易維護性的電子商務系統提供了良好的機制。隨著J2EE技術的不斷完善和發展,有幾種開源免費的框架出現在J2EE設計中,這些新出現的框架為中小企業提供了一個經濟的、快速開署的、穩定而可擴展的可行方案,使得他們可以使用開源技術來構建企業級應用。其中,Struts就是比較優秀的開源框架。

Struts 1是第一個的MVC框架,它由Apache開源軟件聯盟提供的用于構建JavaWeb應用程序的框架,該框架推出后,就得到了廣泛Java Web開發者的擁護,經過長達6年時間的發展,Struts 1框架更加成熟、穩定,性能也有了很好的保證。因此,到目前為止,Struts 1依然是世界上使用最廣泛的MVC框架。但是由于些設計上的缺陷成為它未來發展的障礙。為了給Java Web開發人員提供一個更好的框架,提出了Struts 2的新模式。Struts 2雖基于Struts 1發展,但并不是以Struts 1為核心,而是采用Web Work為核心,尤其是吸收了Struts 1和 Web Work兩者的優勢。

2 Struts 2的核心思想

Struts目前已經分化為兩個框架:第一個框架是shale,此框架可以說幾乎脫離了Struts的設計思想,它不僅僅是對Struts的升級,而是另辟空間發展。第二個就是Struts 2框架,Struts 2的核心設計思想是基于Web work框架基礎上發展的,它的特點是兼容struts 1和Web work兩種框架,并且取長補短的開發理念,開發中兼顧了struts 1的部分優點,同時注入了Web work的思想。Struts 2的體系結構同樣也實現了MVC設計模式的概念,它將這些概念映射到Web應用程序的組件和概念中。Struts 2是使用Servlet和Java Server Pages技術的一種MVC實現,而MVC是用來控制Web項目中的變化,提高項目的復用性和可維護性,所以應用Struts 2框架就是用來改進在目前Web開發中存在的不足之處。Struts 2繼承了MVC的各項特性,并根據J2EE的特點,做了相應的變化與擴展。圖1是Struts 2的MVC體系結構圖。

Struts 2技術框架所具有的很多特性使得它非常適合作為Web系統的應用開發過程中。主要特點如下:

①Struts 2大量使用攔截器來處理用戶請求,從而允許用戶的業務邏輯控制器與Servlet API分離。

②Struts 2是一個雅致的,可擴展的,用來建立企業級Java Web應用程序的框架。

③Struts 2不但注重程序的開發過程,更注重部署和后期維護。

④Struts 2來源于Web Work 2。

⑤Struts 2融合了Struts和Web Work的社區力量,是這兩個社區努力的結果。

⑥Struts 2非常容易使用。

⑦Struts 2最大可能的保留了和Struts 1.x的相似行。

(2)Struts 2的體系結構。

Struts 2使用攔截器作為處理(Advice),以用戶的業務邏輯控制器為目標,創建一個控制器??刂破髫撠熖幚碛脩粽埱螅幚碛脩粽埱髸r回調業務控制器的execute方法,該方法的返回值將決定了Struts 2將怎樣的視圖資源呈現給用戶。

由于客戶端瀏覽器初始化一個指向Servlet容器的請求;然后Struts 2的核心控制器FilterDispatcher接受客戶發來的請求,進行相應的判斷調用指定的Action操作;攔截器對請求啟用相應功能;接下來ActionInvocation實例使用命名模式來回調Action的execute方法,該execute方法先獲取用戶請求參數,然后它會調用業務邏輯組件來處理用戶的請求;最后將execute方法的處理結果返回到客戶端的瀏覽器中完成處理過程。

(3)Struts 2的組成及配置。

Struts 2框架主要由三個部分組成:核心控制器FilterDispatcher、業務控制器和用戶實現的業務邏輯組件。Struts 2框架只提供了核心控制器部分的功能,而業務控制器和用戶實現的業務邏輯組件功能需要程序開發人員獨立完成。

由于Struts 2的核心與Struts 1有著本質的區別,也就決定了Struts 2的配置與Struts1有一定的區別。我們需要加載Struts 2框架那么應該首先在Web.xml文件中加載前面提到的核心控制器FilterDispatcher,這樣控制器會加載Struts 2框架。

Struts 2框架有兩個核心配置文件,其中struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。在原始狀態下,Struts 2框架將默認的路徑下是加載放在Web-INF/classes的struts.xml文件。但是由于在Web應用中,隨著系統的需求,各個功能模塊不斷增加修改等,系統中Action數量會越來越繁多,如果我們選擇默認的struts.xml配置文件,那么整個文件會變得非常繁雜,不利于后期維護。為了避免struts.xml文件過十繁雜,提高struts.xml文件的可讀性,我們將struts.xml分解成多個配置文件,然后在struts.xml文件中包含其他配置文件。解決這一問題可以用include方式導入各個功能模塊的文件。當然也可以根據用戶自己需要來劃分,本系統采用的是按模塊劃分。

Struts 2框架包含的另一個核心文件是struts.properties,該文件定義了Struts 2框架的屬性,我們可以設置相應屬性來達到開發程序的需求。Struts.properties文件是一個標準的Properties文件,該文件包含了系列的key-value對象,每個key就是一個Struts 2屬性,該key對應的value就是一個Struts 2屬性值。struts.properties文件通常放在Web應用的Web-INF/classes路徑下。實際上,只要將該文件放在Web應用的CLASSPATH路徑下,Struts 2框架就可以加載該文件。

3 總結

隨著網絡信息技術的發展,網絡應用在人們日常生活中越來越受到重視,人們越來越希望在較短的時間內買到自己所需要的東西。但是市場上的商品種類很多,人們要想購買到自己需要的商品,不得不花費很多時間,給購買帶來了麻煩。網上購物系統彌補了傳統購物的許多不足之處,有效地縮短了傳統購物過程中的流通環節,有著經營成本低、庫存虛擬,用戶查看商品方便,減少了地域限制等特點。Struts 2是現今開發技術中運用最廣泛的開源框架技術之一。Struts 2框架具有組件的模塊化,靈活性和重用性的優點,同時簡化了基于MVC的Web應用程序的開發。

參考文獻

[1]徐明華,邱加永.Struts基礎與案例開發詳解[M].北京:清華大學出版社,2009.

[2]黃金雪.基于Struts和Hibernate的框架模型在銀行信貸管理系統的研究[D].成都:西南交通大學,2008.

[3]郭梅,江紅.Struts在實現MVC架構中的應用[J].計算機與現代化,2004,(1):2834.

篇10

關鍵詞:struts+ hibernate架構;MVC框架;自動組卷模塊;擴展性

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)25-1473-03

The Designation and Realization of Item Pool System Based Struts + Hibernate Framework

JIANG Jiao-li, JIANG Yong-ping, HUANG Feng-ai

(Information Engineering of Guangdong University of Technology, Guangzhou 510006,China)

Abstract:The traditional B/S item pool system has the issue that page code redundance , lowlly reusability of the function module,maintained hardly and so on.This article proposedthe design conception of item pool system basedStruts + Hibernate framework, According to their superiority supplementary characteristic,Completedthe MVC model and the lasting level conformity.Take the automatic group volume module realization as an example,conform that it has guaranteed system each internal close coupling well, Layer upon layer between loose coupling, Simultaneously strengthened the code reusability and the flexibility, further strengthens the system the extension.

Key words: Struts+Hibernate construction; MVC framework; auto-composing test paper module; expansibility

1 引言

隨著計算機和網絡的普及,國內外目前已經存在很多比較成熟的認證考試,比如:我國的計算機等級考試,美國的GRE,托??荚嚨?。為了順應計算機網絡時代的發展,考核方式逐步趨向無紙化,解決高校課程內容繁多,教學資源要求更豐富的難題,學校必須提高自身的考核方式,擁有自己的題庫系統。而系統的實現技術的選擇也是非常重要的。其中利用比較成熟的具有跨平臺性的Java技術實現是首選,因為J2EE體系結構提供中間層集成框架能滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。本文所介紹的題庫系統主要考慮到:傳統的基于B/S模式的題庫系統開發具有頁面代碼冗余度高,功能模塊可重用性低,擴展性差,維護困難等問題;在軟件設計中采用基于MVC模式的Struts+Hibernate框架技術實現整個系統。本文將以題庫系統的設計為例,分別介紹Struts和Hibernate框架,重點分析兩個框架的優勢互補的特點,并以題庫系統的架構設計來完成Struts+Hibernate框架的整合,最后詳細介紹了自動組卷功能模塊的實現以及解決的問題,說明Struts和Hibernate框架在題庫系統實現上的應用。

2 題庫系統功能描述

題庫系統根據實際需要將實際用戶分為三類權限管理:管理員、教師、學生??傁到y架構分為兩大模塊:后臺教師管理模塊、前臺考試模塊。題庫系統的總體框架結構圖1所示。

題庫系統前臺用戶主要是學生,學生登錄前臺可以完成在線考試、考卷提交、考試成績查詢、修改用戶基本資料等操作。

本系統最重要的是后臺管理模塊的實現,管理員登陸后臺管理界面后,可進行用戶信息管理、題庫信息管理、考試試卷管理、考務信息管理、其他管理模塊的操作,下面對各模塊的基本功能進行大概介紹。

用戶信息管理模塊:管理員可添加、刪除、修改學生信息;設置教師權限,使管理員和教師都能對題庫和其他基本功能進行操作。

題庫信息管理模塊:這個模塊主要用來操作單選題,多選題、判斷題、填空題、簡答題的添加、刪除和修改,并可以根據指定專業、知識點進行精確題目查詢。

考試試卷管理模塊:主要是根據不同專業,難度系數的設定等條件抽題生成試卷,并對生成并且未試卷進行修改,同時還支持套題管理。

考務信息管理模塊:管理員/教師在考試前對生成試卷狀態進行控制,、中止考試試卷;考試結束后對客觀題進行評分,系統自動完成主觀題和客觀題的總分相加,得出總分并生成考生考試情況統計供管理員/教師查詢。

其他管理模塊:這個模塊主要用來添加班級信息和考試知識點信息。

3 系統開發技術運用及架構整合

3.1 基于MVC模式的struts+hibernate框架設計策略

MVC(Model-View-Controller)設計模式將系統分成模型層、視圖層、控制層三層,大大減少在設計系統中的代碼的“冗余度”,降低了頁面顯示、邏輯控制、數據處理的耦合性。目前有很多可供MVC使用的web框架,Struts就是其中的一種,相比較其他框架而言,Struts是一種開源框架,它能使你的代碼具有高度的平臺無關性,提供了對開發MVC系統的底層支持,它的目的是為了幫助你減少在運用MVC設計模型來開發Web應用的時間。利用Struts來開發能夠很好地實現各層之間的散耦合[2-3]。