• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一個典型的基于SS2H的軟件工程案例系統(tǒng)開發(fā)

    2015-11-20 08:57:28沈來信
    黃山學(xué)院學(xué)報 2015年5期
    關(guān)鍵詞:購物車頁面訂單

    楊 帆,沈來信,2

    (1.黃山學(xué)院 信息工程學(xué)院, 安徽 黃山245041;2.同濟(jì)大學(xué) 電子與信息工程學(xué)院, 上海201804)

    0 前 言

    在軟件工程教學(xué)過程中,以案例驅(qū)動展開教學(xué),以規(guī)范的軟件開發(fā)過程為引導(dǎo),包括軟件的需求分析、總體設(shè)計與詳細(xì)設(shè)計、系統(tǒng)編碼與實現(xiàn)、系統(tǒng)測試與維護(hù)等,注重培養(yǎng)學(xué)生熟練掌握軟件工程過程中所使用到的技術(shù)、方法和工具,可以促進(jìn)學(xué)生軟件開發(fā)能力培養(yǎng)和現(xiàn)代最新技術(shù)的掌握能力。

    隨著移動設(shè)備、互聯(lián)網(wǎng)絡(luò)的發(fā)展,基于網(wǎng)絡(luò)支付的網(wǎng)上購物平臺應(yīng)用越來越廣泛。平臺可以提供方便、可靠和實惠的服務(wù),用戶有了更多的選擇機(jī)會,提高了購物形式的多樣性,促進(jìn)了消費。

    購物網(wǎng)站設(shè)計既要注重功能性,分類豐富準(zhǔn)確、方便用戶瀏覽、查詢和購物,又要注重性能需求,快速、準(zhǔn)確的響應(yīng)是吸引用戶的關(guān)鍵,同時系統(tǒng)要具有良好的接口,如支付接口要求安全性很高,物流查詢接口要求準(zhǔn)確、及時、方便等。

    購物系統(tǒng)采用MVC架構(gòu)實現(xiàn)[1-5],一般分為3部分:前臺頁面顯示層(View,頁面視圖顯示與響應(yīng))、后臺業(yè)務(wù)管理層(Controller,業(yè)務(wù)邏輯實現(xiàn))和數(shù)據(jù)庫管理層(Model,數(shù)據(jù)層與數(shù)據(jù)持久層)。前臺頁面顯示層是用戶可以瀏覽和響應(yīng)的到web頁面,包括商品分類、商品介紹、商品查詢、商品訂購、購物車、訂單提交、在線支付等功能;后臺業(yè)務(wù)管理層主要負(fù)責(zé)將客戶端提交信息與數(shù)據(jù)庫層和數(shù)據(jù)核心處理層連接,進(jìn)行數(shù)據(jù)處理和存儲,主要包括欄目管理(增加、刪除與修改,以下類似)、商品管理、用戶管理、員工管理、權(quán)限管理和部門管理等。數(shù)據(jù)庫管理層主要管理具體的數(shù)據(jù)庫表操作,接受管理層業(yè)務(wù)請求,完成具體的數(shù)據(jù)讀出與寫入等。

    SS2H為Spring+Struts2+Hibernate集成框架[6-10],其中Struts負(fù)責(zé)Web頁面層實現(xiàn),Spring負(fù)責(zé)業(yè)務(wù)邏輯層實現(xiàn),Hibernate負(fù)責(zé)數(shù)據(jù)管理層實現(xiàn),分層實現(xiàn),結(jié)構(gòu)清晰,三層可以獨立開發(fā)。以XML文件為核心配置文件,配置靈活,方便修改,提高了系統(tǒng)的可復(fù)用性、可擴(kuò)展性和可修改性。

    1 系統(tǒng)開發(fā)過程

    按照標(biāo)準(zhǔn)軟件工程開發(fā)過程,包括系統(tǒng)需求分析、系統(tǒng)設(shè)計、編碼實現(xiàn)、系統(tǒng)測試等,下面依次對每個環(huán)節(jié)主要部分加以說明。

    1.1 系統(tǒng)需求分析

    主要包括系統(tǒng)的功能需求、性能需求和接口需求。功能需求主要包括3個部分:

    1.頁面視圖部分:用戶通過瀏覽器訪問,展現(xiàn)給用戶UI界面,要求設(shè)計簡潔,樣式統(tǒng)一,使用方便,能夠吸引用戶,響應(yīng)迅速,與其他系統(tǒng)的接口使用方便,便于查詢、瀏覽和購物等。

    2.數(shù)據(jù)庫數(shù)據(jù):存儲的網(wǎng)站相關(guān)信息數(shù)據(jù),比如產(chǎn)品信息,用戶信息,管理員信息等。系統(tǒng)的數(shù)據(jù)庫數(shù)據(jù)主要來源于后臺數(shù)據(jù)中心,該數(shù)據(jù)由管理員或者有產(chǎn)品添加權(quán)限的員工統(tǒng)一添加管理;產(chǎn)品添加成功后先寫入數(shù)據(jù)庫,然后顯示給會員和游客瀏覽,必須注冊會員后才可以購買產(chǎn)品。數(shù)據(jù)庫是產(chǎn)品模塊和前臺頁面的核心點。

    3.數(shù)據(jù)核心處理部分:包括商品分類管理、商品管理、用戶管理、購物車管理、訂單管理、物流管理等,在后臺管理中對這些信息進(jìn)行增加、刪除與修改操作,把更新后的數(shù)據(jù)寫入到數(shù)據(jù)庫中,前臺頁面將從數(shù)據(jù)庫中讀取最新的分類信息、商品信息等,系統(tǒng)整體架構(gòu)如圖1所示。

    圖1 系統(tǒng)總體架構(gòu)

    1.2 系統(tǒng)設(shè)計

    主要對系統(tǒng)的功能需求、性能需求和接口需求進(jìn)行模塊劃分,模塊劃分講究適當(dāng)原則,一般劃分?jǐn)?shù)為3-7個為宜,設(shè)計每個子模塊的功能以及模塊之間接口等,每個子模塊要求獨立性強(qiáng),便于并行開發(fā)。設(shè)計每個子模塊的流程圖或順序圖,便于后期的編碼實現(xiàn)。我們以購物車模塊開發(fā)為例說明。

    1.購物車模塊

    主要處理用戶購買商品、購物車、生成訂單、訂單生成、發(fā)貨等。購物車流程如圖2所示。

    圖2 購物車流程

    注冊后的會員將商品加入購物車后,填寫地址、聯(lián)系方式、付款方式等相關(guān)信息。后臺管理員審核訂單信息、配貨、發(fā)貨、確認(rèn)收貨、確認(rèn)收款等。

    2.數(shù)據(jù)庫設(shè)計

    根據(jù)SS2H框架的創(chuàng)建JPA實體和創(chuàng)建Java類,沒有任何限制,只需要使用javax.persistence.Entity注明,JPA的設(shè)計是基于非侵入性的原則,容易與其他框架進(jìn)行整合。

    JPA能夠支持面向?qū)ο蟮奶匦裕珙惖募?,多態(tài)和類之間的復(fù)雜關(guān)系之間的繼承,這種支持使開發(fā)人員能夠最大限度地利用面向?qū)ο蟮哪P驮O(shè)計企業(yè)應(yīng)用,不需要程序員去思考這些在關(guān)系數(shù)據(jù)庫持久化功能。

    訂單表order存儲用戶下的訂單,及其后臺管理員操作訂單的流轉(zhuǎn),各字段分別為:ordered為訂單號,createDate為訂單創(chuàng)建時間,deliverFee為配送費,paymentWay是支付方式,paymentstate是訂單配送信息,payablefee為應(yīng)付款,lockuser 是對訂單進(jìn)行加鎖的用戶,值為null代表訂單未被加鎖,否則訂單被加鎖,contact_id是存儲聯(lián)系人的主鍵id,deliver_id是存儲配送信息的主鍵id等。其他表如訂單的訂購者信息表ordercontactinfo、管理員admin表、商品表、分類表等不再一一介紹。

    3.JPA配置

    數(shù)據(jù)庫操縱交給JPA (Java Persistence API)管理,JPA框架中支持大數(shù)據(jù)集、事務(wù)、并發(fā)等容器級事務(wù),配置persistence.xml為控制臺輸出數(shù)據(jù)庫語句,以及對Jdbc操作控制等,配置如下所示:

    <provider >org.hibernate.ejb.HibernatePersistence </provider>

    <properties><! --配置Hibernate-->

    <property name="hibernate.dialect" value="org.hibernate.dialect.Mysql5Dialect"/>

    <! --設(shè)置外連接抓取樹的最大深度-->

    <property name="hibernate.max_fetch_depth" value="3"/>

    <! --加載hibernate自動更新數(shù)據(jù)庫結(jié)構(gòu)-->

    <property name="hibernate.hbm2ddl.auto" value="update"/>

    <! --JDBC獲取量大小-->

    <property name="hibernate.jdbc.fetch_size" value="18"/>

    <! --開啟Hibernate批量更新-->

    <property name="hibernate.jdbc.batch_size" value="10"/>

    <! --是否輸出數(shù)據(jù)庫語句-->

    <property name="hibernate.show_sql" value="false"/>

    </properties>

    配置數(shù)據(jù)的賬戶密碼,數(shù)據(jù)庫連接池,緩沖池,最大連接數(shù)等。數(shù)據(jù)庫鏈接如下:

    <bean id="dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

    <property name="driveClass" value="${driverClass}"/><property name="jdbcUrl" value="${jdbcUrl}"/>

    <property name="user" value="${user}"/>

    <property name="password" value="${password}"/>

    <property name="initialPoolSize" value="1"/>

    <property name="minPoolSize" value="1"/>

    <property name="maxPoolSize" value="300"/>

    <property name="acquireIncrement" value="5"/>

    <property name="idleConnectionTestPeriod" value="60"/>

    </bean>

    使用數(shù)據(jù)源和指定persistence.xml位置的方式創(chuàng)建entityManagerFactory,如果使用的不是hibernate JPA實現(xiàn),需要在tomcat作一些特殊配置。

    Hibernate配置文件通過entity注解這樣就可以映射到數(shù)據(jù)庫表中,生成相應(yīng)實體類的表結(jié)構(gòu),上面的配置就會生成message這樣表,字段是message屬性的名字一一對應(yīng),如下所示:

    @Entity /*客服留言*/

    public class Message{

    private Integer id;

    private String content;

    private Date createtime=new Date();

    private String username;

    private Order order;

    public Integer getId(){ return id;}

    public Integer setId(id){this.id=id;}

    }

    .../*每個屬性對應(yīng)一個get和set方法*/

    獲取EntityManager實例,EntityManager是用來對實體Bean進(jìn)行操作的輔助類、可以實體Bean進(jìn)行clear(分離所有當(dāng)前正在被管理的實體)、remove(刪除對象)、find (查找bean, 若實體Bean不存在return null)、persist(添加實體Bean)等一些提供對數(shù)據(jù)庫的基礎(chǔ)操作,還擴(kuò)充了createQuery執(zhí)行Sql語句,可以很方便操作數(shù)據(jù)庫。

    1.3 編碼實現(xiàn)

    主要針對系統(tǒng)設(shè)計中的模塊進(jìn)行編碼實現(xiàn),每個模塊對應(yīng)一個或多個類,便于重復(fù)調(diào)用使用,提高系統(tǒng)的可擴(kuò)展性。我們以購物車實現(xiàn)為例,加以說明。

    購物車采用Session記錄數(shù)據(jù),由類(BuyCart)request.getSession().getAttribute("buyCart")進(jìn)行購物車數(shù)據(jù)讀取,讀取用戶本地數(shù)據(jù)。在會員登錄的時候獲取request將購物車的數(shù)據(jù)寫入本地,這樣可以減輕服務(wù)器的負(fù)擔(dān),提高服務(wù)器的性能。

    購物車中可以刪除商品,更改商品數(shù)量,更新購買商品。填寫用戶信息和選擇支付方式等流程節(jié)點的時候,可以退回上一個流程節(jié)點,修改確認(rèn)后可以直接返回修改的節(jié)點。(采用了當(dāng)前URL返回狀態(tài)記錄在BuyCartForm模型中的directUrl,當(dāng)鏈接跳轉(zhuǎn)時候首頁獲取directUrl 值如果有直接跳轉(zhuǎn)到directUrl所指向的頁面; 需要對url進(jìn)行Base64加密處理以防泄露用戶詳細(xì)信息)

    1.JPA配置與實現(xiàn)

    本系統(tǒng)中就使用了Spring+Hibernate3 (JPA)+compass與paoding分詞器進(jìn)行商品搜索管理。使用Lucene進(jìn)行搜索,能夠在JSP搜索結(jié)果頁面,高亮顯示檢索內(nèi)容而且把匹配度高的相關(guān)數(shù)據(jù)拍在最前面,比數(shù)據(jù)中的like搜索性能要高效果更直觀。

    配置compass檢索entity映射的實體,建立索引的存儲空間為了優(yōu)化搜素速度可以將索引建立在內(nèi)存中,但是考慮到高并發(fā)量的問題,把索引建立在外存中相對而言比較好。

    將compass與paoding分詞結(jié)合,提高商品搜索的性能。配置compass操作bean交給spring統(tǒng)一管理(索引的添加/更新/刪除操作)。

    采用配置entity搜索實體注解方式開發(fā), 該實體跟索引的document進(jìn)行映射,提高代碼低耦合高內(nèi)聚。

    設(shè)置最大檢索條數(shù),和檢索關(guān)鍵詞的高亮顯示執(zhí)行compassTemplate.execute (new QueryCallback(String keyword, String firstResult, String maxResult))開始搜索。

    Compass架包高效率管理索引建立過程,借助lucene建立索引的過程是自己用JDBC跑SQL獲得ResultSet,遍 歷ResultSet 建 立Document 對 象 并 用IndexWriter寫入文件目錄。

    在ApplicationContext.xml定義了Compass與Spring的集成,配置參數(shù),并讓GPS隨ApplicationContext啟動開始監(jiān)控Hibernate的DataChange。

    2.購物車實現(xiàn)

    購物車類包含有:購物項,收貨人配送信息,訂購者聯(lián)系信息,收獲地址,支付方式,配送費用,留言等信息。

    獲取用戶本地的cookie中購物車的數(shù)據(jù),初始化購物車,當(dāng)將物品添加到購物車或者更新購物車數(shù)據(jù)時,服務(wù)器將這些數(shù)據(jù)以cookie的形式寫入瀏覽器中,保存在用戶本地。設(shè)定有效的cookie保存時間,過期后自動清空購物車數(shù)據(jù)。

    3.系統(tǒng)管理權(quán)限的設(shè)計

    使用3種方式完成系統(tǒng)的權(quán)限設(shè)計。

    a.使用JSP的filter過濾器進(jìn)行粗粒度管理。取出session中的員工信息,判斷是否有該頁面路徑的訪問權(quán)限,如果有正常瀏覽該頁面,如果沒有跳轉(zhuǎn)到登錄頁面。

    b.通過struts2自帶的權(quán)限的攔截進(jìn)行細(xì)粒度管理

    第一步:配置struts2中的默認(rèn)攔截器

    <interceptor name="permission" class="cn.bamboo.web.action

    .privilege.PermissionInterceptor"/>

    <interceptor-stack name="employeePermissionStack">

    <interceptor-ref name="defaultStack"/>

    <interceptor-ref name="permission"/>

    </interceptor-stack>

    </interceptors>

    <default -interceptor -ref name = "employeePermission-Stack"/>

    <global-results>

    <result name="message">

    /WEB-INF/page/share/message.jsp</result>

    <result name="directUrl">

    /WEB-INF/page/share/directUrl.jsp</result>

    </global-results>

    添加自己新建的攔截器作為第一個過濾器。

    第二步:自主開發(fā)一個攔截器,通過HttpServletRequest對象的getRequest()方法獲得請求命令,判斷是否以"/control" 開始,如果是再判斷是否有效,即validate(action.getClass(),methodName,request),如 果返回True,則有效,否則無效。

    通過注解Action層中的執(zhí)行方法。在配置相應(yīng)的權(quán)限,在攔截器中首頁獲取到該方法執(zhí)行時需要的權(quán)限,在獲取該管理員所擁有的權(quán)限進(jìn)行比較,如果有正常執(zhí)行,如果無提示沒有該操作權(quán)限。

    c.使用自定義jstl控制view層

    應(yīng)用JSTL標(biāo)簽檢測view頁面上是否有相應(yīng)的標(biāo)簽顯示,如果沒有對應(yīng)管理權(quán)限,則不顯示在對應(yīng)的頁面上,由此可以實現(xiàn)對沒有權(quán)限的用戶的不可見控制。

    JSP前臺頁面調(diào)用方法如下所示:

    <bamboo:permission privilege="visible" module="product">

    <input name="visible" type="button"

    <c:if test="${fn:length(

    pageView.records)<1}">disabled="disabled"</c:if>

    class="frm_btn" onClick="javascript:

    actionEvent('visible')" value="上架">  

    <input name = "disable" type = "button" class = "frm_btn"

    <c:if test="${fn:length(

    pageView.records)<1}">disabled="disabled"</c:if>

    onClick="javascript:actionEvent('disable')"

    value="下架">  

    </bamboo:permission>

    通過3種權(quán)限的管理,就可以有效的管理整個網(wǎng)站后臺的權(quán)限。

    1.4 系統(tǒng)測試

    系統(tǒng)測試主要是根據(jù)需求分析產(chǎn)生的需求規(guī)格說明書,對系統(tǒng)的功能、性能和接口進(jìn)行測試,如系統(tǒng)響應(yīng)時間、查詢結(jié)果的準(zhǔn)確性、購物流程的合理性、訂單交付的安全性、用戶信息的保密性等,同時還要開啟很多個客戶端進(jìn)行頁面壓力測試、測試系統(tǒng)的吞吐量等。

    2 總 結(jié)

    通過規(guī)范的軟件工程過程實現(xiàn),可以熟知軟件開發(fā)流程,熟練掌握每個環(huán)節(jié)使用的技術(shù)、方法和工具,可以培養(yǎng)學(xué)生的規(guī)范軟件開發(fā)能力,同時掌握最新的技術(shù),SS2H框架是目前比較流行的開發(fā)架構(gòu),具有很好的可擴(kuò)展性、可重用性、可維護(hù)性等,基于SS2H框架的標(biāo)準(zhǔn)軟件開發(fā)過程具有一定的示范作用,對學(xué)生的軟件開發(fā)能力具有很好的提高作用。

    [1]王瑾,王鑫.基于SSH框架下的校園網(wǎng)上交易平臺[D].北京:電子科技大學(xué)碩士學(xué)位論文,2014.

    [2]師溫馨.基于SSH框架的電子商務(wù)購物網(wǎng)站的研究與設(shè)計[J],電子測試,2014(8):10-12.

    [3]張曉孿.基于SSH的團(tuán)購網(wǎng)站的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2012,20(21):122-125.

    [4]米奕杭,袁丁.基于SSH框架的網(wǎng)絡(luò)購物電子商務(wù)平臺的設(shè)計與實現(xiàn)[D].成都:四川師范大學(xué)碩士學(xué)位論文,2010.

    [5]謝曉燕,武友新.基于信息發(fā)布平臺的網(wǎng)上購物系統(tǒng)的設(shè)計與實現(xiàn)[D].南昌:南昌大學(xué)碩士學(xué)位論文,2011.

    [6]張建浩,騰桂法.基于SSH框架的網(wǎng)上訂餐系統(tǒng)的設(shè)計與實現(xiàn)[D].石家莊:河北農(nóng)業(yè)大學(xué)碩士學(xué)位論文,2013.

    [7]于湛麟,李仲秋,任永昌.SSH框架實現(xiàn)MVC架構(gòu)的電子商務(wù)軟件平臺[J].計算機(jī)技術(shù)與發(fā)展,2012,22(10):169-172.

    [8]龔尚福,龔琴,馮健.基于SSH框架的EPON性能管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用,2013,33(2):571-574.

    [9]徐黎明,李志蜀,宋飛.基于SSH和ExtJSP的Web應(yīng)用框架的設(shè)計與實現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2010(4):14-17.

    [10]林萍.基于SSH+DWR的高??蒲泄芾硐到y(tǒng)研究與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2011,31(7):66-68.

    [11]張建軍,劉虎,倪芳英.基于SSH與High charts整合架構(gòu)的Web應(yīng)用研究[J].計算機(jī)技術(shù)與發(fā)展,2013,23(9):245-251.

    猜你喜歡
    購物車頁面訂單
    大狗熊在睡覺
    春節(jié)期間“訂單蔬菜”走俏
    刷新生活的頁面
    新產(chǎn)品訂單紛至沓來
    被疫情改變的購物車
    海峽姐妹(2020年5期)2020-06-22 08:26:10
    推購物車購物
    家教世界(2018年31期)2018-11-28 09:32:26
    “最確切”的幸福觀感——我們的致富訂單
    購物車?yán)锏摹皶r間線”
    清空購物車了嗎!
    怎樣做到日訂單10萬?
    张家界市| 始兴县| 泊头市| 健康| 陆河县| 龙陵县| 专栏| 乐安县| 云龙县| 宁明县| 绿春县| 平谷区| 富平县| 高邮市| 绵竹市| 资源县| 宜阳县| 马尔康县| 滨海县| 普兰店市| 沾化县| 天等县| 茌平县| 贡觉县| 泾阳县| 江油市| 民县| 嘉善县| 静宁县| 台中县| 界首市| 常德市| 昭觉县| 台东市| 莱芜市| 十堰市| 盐边县| 永昌县| 彭水| 永吉县| 上虞市|