亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2015-11-20 08:57:28沈來信
        黃山學院學報 2015年5期
        關(guān)鍵詞:頁面數(shù)據(jù)庫用戶

        楊 帆,沈來信,2

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

        0 前 言

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

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

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

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

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

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

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

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

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

        1.頁面視圖部分:用戶通過瀏覽器訪問,展現(xiàn)給用戶UI界面,要求設計簡潔,樣式統(tǒ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ù)核心處理部分:包括商品分類管理、商品管理、用戶管理、購物車管理、訂單管理、物流管理等,在后臺管理中對這些信息進行增加、刪除與修改操作,把更新后的數(shù)據(jù)寫入到數(shù)據(jù)庫中,前臺頁面將從數(shù)據(jù)庫中讀取最新的分類信息、商品信息等,系統(tǒng)整體架構(gòu)如圖1所示。

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

        1.2 系統(tǒng)設計

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

        1.購物車模塊

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

        圖2 購物車流程

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

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

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

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

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

        3.JPA配置

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

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

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

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

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

        <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ù)庫表中,生成相應實體類的表結(jié)構(gòu),上面的配置就會生成message這樣表,字段是message屬性的名字一一對應,如下所示:

        @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;}

        }

        .../*每個屬性對應一個get和set方法*/

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

        1.3 編碼實現(xiàn)

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

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

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

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

        本系統(tǒng)中就使用了Spring+Hibernate3 (JPA)+compass與paoding分詞器進行商品搜索管理。使用Lucene進行搜索,能夠在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進行映射,提高代碼低耦合高內(nèi)聚。

        設置最大檢索條數(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ù),初始化購物車,當將物品添加到購物車或者更新購物車數(shù)據(jù)時,服務器將這些數(shù)據(jù)以cookie的形式寫入瀏覽器中,保存在用戶本地。設定有效的cookie保存時間,過期后自動清空購物車數(shù)據(jù)。

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

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

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

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

        第一步:配置struts2中的默認攔截器

        <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í)行方法。在配置相應的權(quán)限,在攔截器中首頁獲取到該方法執(zhí)行時需要的權(quán)限,在獲取該管理員所擁有的權(quán)限進行比較,如果有正常執(zhí)行,如果無提示沒有該操作權(quán)限。

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

        應用JSTL標簽檢測view頁面上是否有相應的標簽顯示,如果沒有對應管理權(quán)限,則不顯示在對應的頁面上,由此可以實現(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)的功能、性能和接口進行測試,如系統(tǒng)響應時間、查詢結(jié)果的準確性、購物流程的合理性、訂單交付的安全性、用戶信息的保密性等,同時還要開啟很多個客戶端進行頁面壓力測試、測試系統(tǒng)的吞吐量等。

        2 總 結(jié)

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

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

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

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

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

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

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

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

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

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

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

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

        猜你喜歡
        頁面數(shù)據(jù)庫用戶
        大狗熊在睡覺
        刷新生活的頁面
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        如何獲取一億海外用戶
        中文字幕亚洲入口久久| 国产成人亚洲综合无码精品| 日本一区免费喷水| 国产自拍视频免费在线观看| 玩弄少妇人妻中文字幕| 乱人伦视频中文字幕| 一区五码在线| 国产免费精品一品二区三| 四虎影在永久在线观看| 国产自偷自偷免费一区| 色噜噜狠狠色综合中文字幕| 丰满人妻一区二区三区52 | 亚洲精品午夜久久久九九| 免费毛片a线观看| av中文字幕综合在线| 久久精品网站免费观看| 日本在线一区二区三区不卡| 亚洲国产精品va在线播放| 2021av在线| 久久亚洲综合亚洲综合| 天天躁夜夜躁av天天爽| 大伊香蕉在线精品视频75| 欧洲人体一区二区三区| 亚洲国产综合人成综合网站| 中文字幕乱码熟妇五十中出| 91麻豆国产香蕉久久精品 | 国产精品多人p群无码| 天天躁人人躁人人躁狂躁| 精品一区二区三区中文字幕在线| 久久精品国产亚洲av蜜点| 亚洲av最新在线网址| 国产成人亚洲精品77| 亚洲性日韩一区二区三区| 欧美又粗又长又爽做受| 欧美伊人久久大香线蕉在观| 在线免费观看亚洲毛片| 精品国产sm最大网站| 女人扒开下面无遮挡| 亚洲AV秘 无套一区二区三区| 麻豆人妻性色av专区0000| 日本三级欧美三级人妇视频黑白配|