版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p><b> 一 設計題目1</b></p><p><b> 二 設計目的1</b></p><p><b> 三 總體設計1</b></p><p><b> 3.1需求分
2、析1</b></p><p> 3.2 系統(tǒng)設計3</p><p> 3.2.1 開發(fā)技術與工具3</p><p> 3.3 概要設計4</p><p> 3.4 數(shù)據庫設計5</p><p> 3.4.1 數(shù)據庫邏輯設計5</p><p> 3.5 詳細設計
3、7</p><p> 3.5.1 設計視圖層7</p><p> 3.5.2 設計控制層9</p><p> 3.5.3 設計對象模型10</p><p> 3.5.4 設計數(shù)據訪問層11</p><p> 四 算法描述與實現(xiàn)14</p><p> 4.1 實現(xiàn)瀏覽拍賣物
4、品種類頁面14</p><p> 4.2 實現(xiàn)查看物品詳細信息及出價界面17</p><p> 4.3 實現(xiàn)查看競得的商品界面18</p><p><b> 五 結論20</b></p><p><b> 附錄:源代碼21</b></p><p><b
5、> 一 設計題目</b></p><p><b> 網上拍賣系統(tǒng)</b></p><p><b> 二 設計目的</b></p><p> 隨著信息化技術在生活中的應用越來越廣泛,網上購物也逐漸成為人們的一種生活方式。本系統(tǒng)正是基于這樣一種環(huán)境下應運而生。計機網絡為商務活動開辟了新的空間,提供了新
6、的手段,同時為公司業(yè)務發(fā)展賦予了更多的機會,成為現(xiàn)代商務的潮流。網上拍賣是建立在電子網絡技術上的一種全新的電子商務模式。它具有成本低廉,方式靈活,運行快捷等特點,通過Internet將拍賣活動變成每一位網民都可以加入其中的交易方式。但它在給人們帶來便利的同時也帶來了很多的問題。它的公平、公正、公開性受到大家的關注。其可靠性和安全性更是大家關心的問題。這就要求不僅要在系統(tǒng)的設計上做到公平合理,也要在信息的傳輸上做到安全可靠,以構建一個公平
7、又安全的交易平臺。</p><p><b> 三 總體設計</b></p><p><b> 3.1需求分析</b></p><p> 需求分析是介于系統(tǒng)分析和軟件設計階段之間的重要橋梁。一方面,需求分析以系統(tǒng)規(guī)格說明和項目規(guī)劃作為分析活動的基本出發(fā)點,并從軟件角度對它們進行檢查與調整;另一方面,需求規(guī)格說明又是軟件
8、設計、實現(xiàn)、測試直至維護的主要基礎。良好的分析活動有助于避免或盡早剔除早期錯誤,從而提高軟件生產率,降低開發(fā)成本,改進軟件質量。需求分析框圖如圖3-1。</p><p> 圖3-1 網上拍賣系統(tǒng)需求框圖</p><p><b> 3.2 系統(tǒng)設計</b></p><p> 本系統(tǒng)是基于B/S模式開發(fā)的JAVA EE多層體系結構WEB應用
9、。系統(tǒng)開發(fā)主要分為以下幾層:表示層、業(yè)務層、DAO層、持久層。業(yè)務層和DAO層都通過接口與其它層進行連接從而減小了各層之間的耦合度,實現(xiàn)高內聚、低耦的思想。</p><p> 3.2.1 開發(fā)技術與工具</p><p> 主要開發(fā)工具為:MyEclipse8.6、Mysql6.0、Tomcat6.0。</p><p> 主要技術包括:JavaEE輕量級框架S2
10、SH、Log4j、Ajax。</p><p> S2SH集成框架是Struts、Spring 和Hibernate 三種技術的有機融合, 是目前應用最廣泛的Java EE 架構。在S2SH集成框架中,Struts 的作用是提供MVC 模型, 將界面、業(yè)務邏輯和數(shù)據分離, 并提供一個高可擴展的架構。Spring作為核心,向上整合MVC框架,向下整合ORM框架,使用Spring的IoC容器來管理各組件之間之間的依賴
11、關系,Spring的聲明事務將負責邏輯層組件的事務管理。而Hibernate 提供了一個抽象的數(shù)據服務視圖,將用戶對數(shù)據庫的訪問進行高度抽象。 </p><p> Struts 是目前創(chuàng)建Web 應用最常用的表現(xiàn)層MVC 框架實現(xiàn),是Jakarta Apache 的一個開源項目?;贛odel2 的Struts 框架利用控制器和定制標簽庫將應用中的模型和視圖分離,達到了層間松散耦合的效果,同時提高系統(tǒng)的靈活性、
12、重用性和維護性。作為開源項目,Struts 經受了大量實踐的檢驗,功能越來越強大,體系也日臻完善,并且對其他技術和框架顯示出良好的融合性。</p><p> Spring 由Rod Johnson 創(chuàng)建,它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。Spring 使用基本的JavaBean 來完成以前只可能由EJB 完成的事情。然而,Spring 的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,
13、任何Java 應用都可以從Spring 中受益。簡單來說,Spring 是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。</p><p> Hibernate 是一個開放源代碼的對象關系映射框架,它對JDBC 進行了非常輕量級的對象封裝,使得Java 程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據庫。Hibernate 可以應用在任何使用JDBC 的場合, 既可以在Java 的客戶端程序使用,
14、也可以在Servlet/JSP 的Web 應用中使用。</p><p> AJAX是Asynchronout JavaScript and XML的縮寫,它并不是一門新的語言或技術,實際上是幾項技術按一定的方式組合在一起,在共同的協(xié)作中發(fā)揮各自的作用,它包括:使用XHTML和CSS標準化呈現(xiàn);使用DOM實現(xiàn)動態(tài)顯示和交互;使用XML和XSLT進行數(shù)據交換和處理;使用XMLHttpRequest進行異步數(shù)據讀?。?/p>
15、最后用JavaScript綁定和處理所有數(shù)據。AJAX的一個最大的特點是無需刷新頁面便可向服務器傳輸或讀寫數(shù)據(又稱無刷新頁面),這一特點要得益于XMLHTTP組件XMLHttpRequest對象。這樣就可以像再發(fā)桌面應用程序只同服務器進行數(shù)據層面的交換,而不用每次都刷新界面,也不用每次將數(shù)據處理的工作提交給服務器來做,這樣即減輕了服務器的負擔又加快了響應速度、縮短了用戶等候時間。</p><p><b&g
16、t; 3.3 概要設計</b></p><p> 系統(tǒng)分為前臺和后臺兩個模塊,前臺主要用來提供給系統(tǒng)注冊用戶或者游客瀏覽、查看商品,并提供注冊的模塊,系統(tǒng)注冊用戶通過登錄后還能管理自己的信息和對指定的商品參與競拍。</p><p> 后臺是系統(tǒng)管理員對拍賣系統(tǒng)設置、管理用戶和管理商品的地方。</p><p> 系統(tǒng)的系統(tǒng)層次概框劃分如圖3-2所示
17、。</p><p> 圖3-2 系統(tǒng)層次概框圖</p><p><b> 3.4 數(shù)據庫設計</b></p><p> 根據系統(tǒng)的需求,數(shù)據庫中需要創(chuàng)建以下數(shù)據表。</p><p> ?。?)用戶信息表:用于存放注冊用戶的資料以及用戶登錄情況。</p><p> ?。?)商品分類信息表:商品
18、的主要分類,和分類信息的描述。</p><p> (3)商品信息表:記錄用戶發(fā)布的商品的信息。</p><p> ?。?)用戶出價信息表:用于記錄用戶對相關商品的出價信息。</p><p> ?。?)商品狀態(tài)信息表:用于存放商品狀態(tài)信息。</p><p> 3.4.1 數(shù)據庫邏輯設計</p><p> 數(shù)據庫需求
19、分析設計完畢后,現(xiàn)在可以將上面的需求分析轉化為數(shù)據庫系統(tǒng)所支持的實際數(shù)據模型,也就是數(shù)據庫的邏輯結構,可以作出各表。</p><p> 網上拍賣系統(tǒng)數(shù)據庫中各個表的設計結果如下面的表格所示。每個表格表示在數(shù)據庫中的一個表。</p><p> 如表3-1所示為用戶信息表,記錄了系統(tǒng)中所有用戶的詳細信息。</p><p> 表中user_id為主鍵并被設置為IDE
20、NTITY (1, 1),這樣當插入一條記錄且user_id字段的數(shù)據為空(null)時,新記錄的user_id值將由系統(tǒng)自動給出,且給出的值將比表中曾經曾在的最大的user_id值在1(若是一張新表,則從1開始)。這樣可以保證整個表中的user_id字段在其數(shù)據類型允許的范圍之內沒有重復的值。</p><p> 表3-1 auction_user用戶信息表</p><p> 如表3
21、-2所示為商品分類信息表,記錄了所有商品分類的信息。</p><p> 表3-2 kind商品子分類信息表</p><p> 如表3-3所示為記錄用戶所發(fā)布的商品的詳細信息的表。</p><p> 表中item_id為主鍵設為自動增長。owner_id為auction_user表中user_id的外鍵,kind_id為kind表中kind_id的外鍵,cs
22、ub為subsort表中ssid的外鍵,這些外鍵能保證商品的完整性。cend表示商品的拍賣是否已經結束。</p><p> 表3-3 item商品信息表</p><p> 如表3-4所示為記錄用戶對商品出價情況的信息表。</p><p> 表中bid_id為主鍵設為自動增長。item_id為商品表item中item_id的外鍵,這樣可以保證用戶的出價都是針
23、對已經發(fā)布的商品發(fā)出的。user_id為出價的用標識。howmuch代表用戶對此商品出了多少錢。</p><p> 表3-4 bid用戶出價信息表</p><p> 如表3-5所示為記錄用戶發(fā)布的商品的狀態(tài)的信息表。</p><p> 表中state_id為主鍵設為自動增長。</p><p> 表3-5 state用戶出價信息表<
24、;/p><p><b> 3.5 詳細設計</b></p><p> 3.5.1 設計視圖層</p><p> 系統(tǒng)的視圖層是一組JSP頁面,他們通過Struts結合JSTL EL表達式語言將數(shù)據暴露給用戶,供用戶操作。本系統(tǒng)在界面設計上采用了模塊化處理的思想,把很多頁面共有的部分集成一個模塊,例如頁面的頭、尾,這樣在開發(fā)的時候遇到這類相似的
25、頁面部分就不再需要重新編寫,而只要以一句:<%@include file=”header.jsp”%>就可以重用這部分的內容,大大提高了系統(tǒng)的開發(fā)效率。根據系統(tǒng)的功能,JSP的主要頁面如下。</p><p> 主頁(main.jsp):主頁是系統(tǒng)的入口。效果如圖3-3。</p><p> 圖3-3 主頁效果圖</p><p> 登錄頁(login
26、.jsp):系統(tǒng)為注冊的用戶提供一個進入系統(tǒng)并使用系統(tǒng)功能的入口。</p><p> 登出頁(logout.jsp):用戶離開系統(tǒng)時顯示的頁面。</p><p> 注冊新用戶頁(newuser.jsp):系統(tǒng)提供給普通用戶的注冊功能。只有注冊用戶才可以參加競拍并管理自己的物品。效果如圖3-4。</p><p> 圖3-4 注冊頁面效果圖</p>
27、<p> 管理商品頁(mrgitem.jsp):系統(tǒng)為注冊用戶提供商品管理功能。</p><p> 管理分類頁(mrgkind.jsp):系統(tǒng)為注冊用戶提供商品分類管理功能。</p><p> 查看競得商品頁(viewItemSu.jsp):系統(tǒng)為注冊用戶提供查看用戶自己成功競得的商品的功能。</p><p> 查看自己的競標(viewBid.j
28、sp):系統(tǒng)為注冊用戶提供查看用戶自己正在參與競價的商品。</p><p> 瀏覽流拍商品(viewFailItem.jsp):所有用戶都可以瀏覽處于流拍狀態(tài)的商品。</p><p> 瀏覽拍賣商品(viewKind.jsp):所有用戶都可以瀏覽正在拍賣的商品。</p><p> 查看商品詳細信息(viewDetail.jsp):所有用戶都可以查看正在拍賣物品
29、的詳細信息。但要參與競拍必須是注冊用戶。</p><p> 提示錯誤信息頁面(error.jsp):所有操作錯誤的提示信息頁面。</p><p> 3.5.2 設計控制層</p><p> 根據系統(tǒng)要實現(xiàn)的功能,構成此網上拍賣系統(tǒng)的各個控制層動作類如表3-5-1所示。通過此表,可以從宏觀上了解各個控制層動作類的功能。</p><p>
30、 表3-5-1 控制層的動作類</p><p> 此表列出了本系統(tǒng)中主要的動作類和Form Bean及其功能描述。</p><p> 為了使各個表單中的數(shù)據能正確顯示,本系統(tǒng)重載了ActionServlet類,使其正確處理中文參數(shù)并顯示。設置步驟如下:</p><p> (1)重載ActionServlet,代碼如下:</p><p>
31、; package org.yeeku.struts;</p><p> import org.apache.struts.action.ActionServlet;</p><p> import javax.servlet.http.HttpServletRequest;</p><p> import javax.servlet.http.HttpSe
32、rvletResponse;</p><p> public class MyActionServlet extends org.apache.struts.action.ActionServlet</p><p><b> {</b></p><p> protected void process(HttpServletRequest
33、request, HttpServletResponse response)</p><p> throws java.io.IOException, javax.servlet.ServletException</p><p><b> {</b></p><p> //設置編碼方式為GB2312,正確處理中文。</p>
34、<p> request.setCharacterEncoding("GB2312");</p><p> //將控制權交給父類繼續(xù)處理</p><p> super.process(request, response);</p><p><b> }</b></p><p><
35、;b> }</b></p><p> (2)在web.xml配置文件中應用此重載的MyActionServlet作為前端控制器,部分代碼如下:</p><p><b> …</b></p><p><b> <servlet></b></p><p> <
36、;servlet-name>action</servlet-name></p><p> <servlet-class>org.yeeku.struts.MyActionServlet</servlet-class></p><p> <init-param></p><p> <param-name
37、>config</param-name></p><p> <param-value>/WEB-INF/struts-config.xml</param-value></p><p> </init-param></p><p> <load-on-startup>2</load-on-s
38、tartup></p><p> </servlet></p><p><b> …</b></p><p> 應用此設置后,程序將首先通過MyActionServlet預處理所有發(fā)送至此控制器設置中文編碼,然后使用super.process()方法將控制權交給ActionSerlet處理完成其功能。</p>
39、<p> 3.5.3 設計對象模型</p><p> MyEclipse,可以自動生成這些對象模型,以及數(shù)據訪問層的相關類。在org.yeeku.model包中有五個對象模型各個類的作用如下。</p><p> ?。?)Bid類:用戶出價相關的信息。</p><p> (2)Item類:商品類。</p><p> (3)
40、AcutionUser類:用戶信息類。</p><p> ?。?)Kind類:商品種類類。</p><p> ?。?)State類:商品狀態(tài)。</p><p> 在org.yeeku.model.base包中有五個抽象類分別是org.yeeku.model包中類的父類。每一個抽象類都對應了數(shù)據庫中的一張表。</p><p> 3.5.4
41、設計數(shù)據訪問層</p><p> 數(shù)據訪問層使用Hibernate來實現(xiàn),根據數(shù)據庫表和對象模型之間的對應關系,使用MyEclipse可以自動生成數(shù)據訪問層的DAO類和XXX.hbm.xml文件。此處給出與AuctionUser類相關的AuctionUserDao類及其實現(xiàn)類AuctionUserDaoHirbernet和auctionuser.hbm.xml文件,并對其分析。</p><p
42、> AuctionUserDaoHirbernet類實現(xiàn)代碼如下:</p><p> package org.yeeku.dao;</p><p> import java.util.List;</p><p> import java.util.ArrayList;</p><p> import java.util.Ite
43、rator;</p><p> import org.springframework.orm.hibernate3.support.HibernateDaoSupport;</p><p> import org.yeeku.model.*;</p><p> import org.yeeku.business.*;</p><p>
44、 public class AuctionUserDaoHibernate extends HibernateDaoSupport implements AuctionUserDao </p><p><b> {</b></p><p><b> /**</b></p><p> * 根據id查找用戶</p
45、><p> * @param id 需要查找的用戶id</p><p><b> */ </b></p><p> public AuctionUser get(Integer id)</p><p><b> {</b></p><p> return (Aucti
46、onUser)getHibernateTemplate().get(AuctionUser.class , id);</p><p><b> }</b></p><p><b> /**</b></p><p><b> * 增加用戶</b></p><p> * @
47、param user 需要增加的用戶</p><p><b> */ </b></p><p> public void save(AuctionUser user)</p><p><b> {</b></p><p> getHibernateTemplate().save(
48、user);</p><p><b> }</b></p><p><b> /**</b></p><p><b> * 修改用戶</b></p><p> * @param user 需要修改的用戶</p><p><b> */
49、 </b></p><p> public void update(AuctionUser user)</p><p><b> {</b></p><p> getHibernateTemplate().saveOrUpdate(user);</p><p><b> }</b&g
50、t;</p><p><b> /**</b></p><p><b> * 刪除用戶</b></p><p> * @param id 需要刪除的用戶id</p><p><b> */ </b></p><p> public void
51、delete(Integer id)</p><p><b> {</b></p><p> getHibernateTemplate().delete(getHibernateTemplate().get(AuctionUser.class , id));</p><p><b> }</b></p>
52、<p><b> /**</b></p><p><b> * 刪除用戶</b></p><p> * @param kind 需要刪除的用戶</p><p><b> */ </b></p><p> public void delete(Auctio
53、nUser user)</p><p><b> {</b></p><p> getHibernateTemplate().delete(user);</p><p><b> }</b></p><p><b> /**</b></p><p&g
54、t;<b> * 查詢全部用戶</b></p><p> * @return 獲得全部用戶</p><p><b> */ </b></p><p> public List findAll()</p><p><b> {</b></p><p&
55、gt; return getHibernateTemplate().find("from AuctionUser");</p><p><b> }</b></p><p><b> /**</b></p><p> * 根據用戶名,密碼查找用戶</p><p> *
56、@param username 查詢所需的用戶名</p><p> * @param pass 查詢所需的密碼</p><p> * @return 用戶名,密碼對應的用戶的id</p><p><b> */ </b></p><p> public Integer findUserByNameAndPass(
57、String username , String pass)</p><p><b> {</b></p><p> String[] args = {username , pass};</p><p> List ul = getHibernateTemplate().find("from AuctionUser au whe
58、re au.username = ? and au.userpass = ?" , args);</p><p> if (ul.size() == 1)</p><p><b> {</b></p><p> AuctionUser au = (AuctionUser)ul.get(0);</p><p&g
59、t; return (Integer)au.getId();</p><p><b> }</b></p><p> return null;</p><p><b> }</b></p><p><b> }</b></p><p> 動作
60、類將會根據此類中的方法進行數(shù)據的增、刪、改及查等操作。</p><p> 其他數(shù)據訪問層的xml文件和Dao類如下表:</p><p> 表3-5-2 對象模型與xml文件對應表</p><p> 在org.yeeku.service包中包含兩個類,分別是接口AuctionManager及其實現(xiàn)類AuctionManagerImpl。此類的作用完成了系統(tǒng)的所
61、有的邏輯功能。</p><p><b> 四 算法描述與實現(xiàn)</b></p><p> 4.1 實現(xiàn)瀏覽拍賣物品種類頁面 </p><p><b> (1)表示層實現(xiàn)</b></p><p> 通過查看商品種類界面,點擊某一種類鏈接時,就直接將請求轉發(fā)給動作viewItem.do處理。最后轉
62、向實際的主頁面(頁面名稱為“viewItem.jsp”)即可。在struts-config.xml文件中的設置如下:</p><p> <action path="/viewItem"</p><p> type="org.springframework.web.struts.DelegatingActionProxy"</p>
63、<p> scope="request" </p><p> validate="false"</p><p> parameter="method"></p><p> <forward name="input" path="/WEB-INF
64、/jsp/viewKind.do"/></p><p> <forward name="success" path="/WEB-INF/jsp/viewItem.jsp"/></p><p><b> </action></b></p><p> 點擊主頁導航
65、欄上瀏覽拍賣物品鏈接即可進入瀏覽物品種類頁面。如圖4-1所示。</p><p> 圖4-1 瀏覽某類所有物品界面</p><p><b> ?。?)實現(xiàn)業(yè)務邏輯</b></p><p> 瀏覽某一種類拍賣物品頁面的顯示涉及到得業(yè)務邏輯為org.yeeku.struts包下的ViewItemAction類,他用于從數(shù)據庫中調出數(shù)據供頁面顯示。
66、其中涉及商品類別的分類顯示代碼如下:</p><p> import java.util.List;</p><p> import org.yeeku.service.AuctionManager;</p><p> import org.yeeku.exception.AuctionException;</p><p> impo
67、rt org.yeeku.struts.base.BaseAction;</p><p> import org.yeeku.model.*;</p><p><b> /**</b></p><p> * @author shm songhongmei_529@163.com</p><p> * @vers
68、ion 1.0</p><p> * 處理商品顯示動作 </p><p><b> */</b></p><p> public class ViewItemAction extends BaseAction</p><p><b> {</b></p><p>
69、 public ViewItemAction()</p><p><b> { }</b></p><p> public ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.serv
70、let.http.HttpServletResponse response) throws AuctionException</p><p><b> {</b></p><p> String id = request.getParameter("kindId");</p><p> if (id == null |
71、| id.trim().equals("") )</p><p><b> {</b></p><p> request.setAttribute("errMsg" , "您必須選擇有效的種類");</p><p> return mapping.findForward(&quo
72、t;input");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> String kind = mgr.getKind(Integer.parseInt(id)
73、);</p><p> List items = mgr.getItemsByKind(Integer.parseInt(id) );</p><p> request.setAttribute("kind" , kind); request.setAttribute("items" , items);</p><p&g
74、t; return mapping.findForward("success");</p><p><b> }</b></p><p><b> }</b></p><p> ?。?)實現(xiàn)數(shù)據訪問層</p><p> 涉及到顯示商品種類的數(shù)據訪問層方法AuctionM
75、anager的getAllItem()方法,并在該方法中調用為ItemDao的findItemByKind(Integer kindId)方法,實現(xiàn)代碼如下:</p><p> public List getItemsByKind(int kindId) throws AuctionException</p><p><b> {</b></p>&
76、lt;p><b> try</b></p><p><b> {</b></p><p> List result = new ArrayList();</p><p> List items = itemDao.findItemByKind(new Integer(kindId));</p>
77、<p> for (Iterator it = items.iterator() ; it.hasNext() ; )</p><p><b> {</b></p><p> Item item = (Item)it.next();</p><p> ItemBean ib = new ItemBean();</p>
78、;<p> initItem(ib,item);</p><p> result.add(ib);</p><p><b> }</b></p><p> return result;</p><p><b> }</b></p><p> catc
79、h (Exception e)</p><p><b> {</b></p><p> log.debug(e.getMessage());</p><p> throw new AuctionException("底層業(yè)務異常,請重新試");</p><p><b> }</
80、b></p><p><b> }</b></p><p> public List findItemByKind(Integer kindId)</p><p><b> {</b></p><p> return getHibernateTemplate().find("
81、from Item as i where i.kind.id = ? and i.itemState.id = 1" , kindId);</p><p><b> } </b></p><p> 其中使用的HQL語句為“from Item as i where i.kind.id = ? and i.itemState.id = 1 , kind
82、Id”,即從kind數(shù)據表中取出所有記錄。</p><p> 4.2 實現(xiàn)查看物品詳細信息及出價界面</p><p> 在顯示同一種類所有物品的界面(viewItem.jsp),通過點擊商品名稱進入顯示商品詳細信息界面(ItemDetail.jsp)。此時可以對自己喜歡的商品進行出價。如圖4-2所示。</p><p> 圖4-2 商品詳細信息界面</p&
83、gt;<p> 此頁面結合表達式語言及struts的標簽庫。處理此表單的動作為bid.do。它由Struts的Action類的子類addBidAction實現(xiàn),在其中加入業(yè)務邏輯并將主頁實際所需要的數(shù)據從數(shù)據庫中提取出來保存到request對象或其他對象中,競價成功后頁面會通過viewBid.do跳轉到查看自己競標頁面(頁面名稱為“viewBid.jsp”)。</p><p> 在struts-
84、config.xml文件中的設置如下:</p><p> <!-- ===============全局ActionForm邏輯名稱及路徑配置 --></p><p> <form-beans></p><p> <form-bean name="bidForm"type="org.apache.str
85、uts.validator.DynaValidatorForm"></p><p> <form-property name="itemId" type="java.lang.String"/></p><p> <form-property name="bidPrice" type=&quo
86、t;java.lang.String"/></p><p> <form-property name="maxPrice" type="java.lang.String"/></p><p> <form-property name="vercode" type="java.lang
87、.String"/></p><p> </form-bean> </p><p> </form-beans></p><p> <!-- ============Action類及其訪問路徑的映射配置 --></p><p> <action-mappings>&
88、lt;/p><p> <action path="/viewBid" type="org.springframework.web.struts.DelegatingActionProxy"</p><p> scope="request"</p><p> validate="false&
89、quot;</p><p> parameter="method"></p><p> <forward name="success" path="/WEB-INF/jsp/viewBid.jsp"/></p><p> <forward name="login&qu
90、ot; path="/WEB-INF/jsp/login.jsp"/> </p><p> <action path="/viewDetail" type="org.springframework.web.struts.DelegatingActionProxy"</p><p> scope
91、="request"</p><p> validate="false"</p><p> parameter="method"></p><p> <forward name="error" path="/WEB-INF/jsp/error.jsp"
92、;/> </p><p> <forward name="success" path="/WEB-INF/jsp/viewDetail.jsp"/></p><p><b> </action></b></p><p> <action path="/b
93、id" type="org.springframework.web.struts.DelegatingActionProxy"</p><p> name="bidForm"</p><p> scope="request"</p><p> validate="true"
94、;</p><p> input="input"></p><p> <forward name="input" path="/viewDetail.do"/></p><p> <forward name="success" path="/vie
95、wBid.do"/></p><p> <forward name="login" path="/WEB-INF/jsp/login.jsp"/></p><p><b> </action></b></p><p> </action-mappings
96、></p><p> 4.3 實現(xiàn)查看競得的商品界面</p><p><b> ?。?)表示層實現(xiàn)</b></p><p> 點擊查看競得的物品鏈接時,就直接將請求轉發(fā)給動作viewItemSu.do處理。最后轉向實際的主頁面(頁面名稱“viewItemSu.jsp”)。</p><p><b>
97、(2)實現(xiàn)業(yè)務邏輯</b></p><p> 在org.yeeku.schdule包下CheckWinner類繼承了TimerTask,實現(xiàn)每一天自動檢查競拍獲勝者,主要代碼如下:</p><p> package org.yeeku.schedule;</p><p> import java.util.TimerTask;</p>
98、<p> import org.yeeku.service.AuctionManager;</p><p> import org.yeeku.exception.AuctionException;</p><p> public class CheckWiner extends TimerTask</p><p><b> {<
99、/b></p><p> private AuctionManager mgr;</p><p> public void setMgr(AuctionManager mgr)</p><p><b> {</b></p><p> this.mgr = mgr;</p><p>&
100、lt;b> }</b></p><p> public void run()</p><p><b> {</b></p><p> System.out.println("---------------------");</p><p><b> try<
101、/b></p><p><b> {</b></p><p> mgr.updateWiner();</p><p><b> }</b></p><p> catch (AuctionException ae)</p><p><b> {<
102、/b></p><p> ae.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p> ?。?)實現(xiàn)數(shù)據訪問層</p><p> 涉及到獲得贏取者的數(shù)據訪問層方法AuctionManag
103、er的updateWiner()方法,并在該方法中調用為ItemDao的findItemByState (Integer stateId)方法,實現(xiàn)代碼如下:</p><p> //根據時間來修改物品的贏取者</p><p> public void updateWiner()throws AuctionException</p><p><b>
104、{</b></p><p> List itemList = itemDao.findItemByState(new Integer(1));</p><p> for (int i = 0 ; i < itemList.size() ; i++ )</p><p><b> {</b></p><p
105、> Item item = (Item)itemList.get(i);</p><p> if (!item.getEndtime().after(new Date()))</p><p><b> {</b></p><p> AuctionUser au= bidDao.findUserByItemAndPrice(item
106、.getId() , item.getMaxPrice());</p><p> if (au != null)</p><p><b> {</b></p><p> item.setWiner(au);</p><p> item.setItemState(stateDao.get(new Integer(2
107、)));</p><p> itemDao.save(item);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> item.setItemState(s
108、tateDao.get(new Integer(3)));</p><p> itemDao.save(item);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
109、;<b> }</b></p><p><b> }</b></p><p><b> 五 結論 </b></p><p> 整個設計主要使用了SSH技術。在設計網上拍賣系統(tǒng)時,需要對功能需求考慮完善。要求運用SSH技術對系統(tǒng)做好整體構架,這對我來說是一個不小的難題。隨著設計程度的不斷深入,又
110、遇到了一些早期沒有想到的問題。特別是一些細節(jié)問題。為了解決這些問題,有時還要對幾個模塊進行大幅度的修改。在設計中,還需要進行細致的測試工作,以發(fā)現(xiàn)程序的錯誤和功能上的不足。</p><p> 由于時間和個人技術關系,本系統(tǒng)還有一些不足和值得改進的地方,比如說可以在系統(tǒng)中使用數(shù)據庫緩沖池技術,這樣可以減少了數(shù)據庫的連接時間并減輕服務器的負擔。再比如說查詢功能,可以進行按關鍵字查詢,這樣系統(tǒng)的靈活性就會有明顯的提高
111、。通過這次課程設計,提高了我在系統(tǒng)整體設計上的能力,增長了分析、解決問題的經驗,對一些知識有了更深一步的掌握??梢哉f,這次課程設計既鍛煉了我動腦分析問題的能力,又鍛煉了我動手解決實際問題的能力,這將對我以后的學習起到不可估量的作用。</p><p> 通過課程設計這次磨礪,我的能力也提高了。所以它對于我們來說有著十分重要的意義。我會運用從中得到的寶貴經驗來指導我今后的學習和工作,不斷的實踐,不斷地學習,讓自己變
112、得更加充實自己,更適合于軟件行業(yè)發(fā)展的需要。</p><p><b> 附錄:源代碼</b></p><p> 商品分類區(qū)動態(tài)實現(xiàn)代碼如下:</p><p> <logic:iterate id="kind" name="kinds" indexId="index">
113、</p><p> <tr class="pt9" height="24"></p><p> <td bgcolor="#FFFFFF">種類名</td></p><p> <td bgcolor="#FFFFFF"><a h
114、ref='viewItem.do kindId=<bean:write name="kind" property="id"/>'><bean:write name="kind" property="kindName"/></a></td></p><p><b
115、> </tr></b></p><p> <tr class="pt9" height="24"></p><p> <td bgcolor="#FFFFFF">種類描述</td></p><p> <td bgcolor=&q
116、uot;#FFFFFF"><bean:writename="kind"</p><p> property="kindDesc"/></p><p><b> </td></b></p><p><b> </tr></b>&
117、lt;/p><p> </logic:iterate></p><p> 查看某種類所有商品界面主要代碼如下:</p><p> <table width="780" align="center" cellspacing=0 background="images/bodybg.jpg"&
118、gt;</p><p><b> <tr></b></p><p><b> <td></b></p><p><b> <br></b></p><p> <table width=80% border=0 align=&qu
119、ot;center" cellpadding=0 cellspacing="1" bgcolor="#CCCCCC"></p><p> <tr bgcolor="#e1e1e1" ></p><p> <td colspan="5" ><div class=&
120、quot;mytitle">當前種類是:<bean:write name="kind"/></div></td> </p><p><b> </tr></b></p><p> <tr class="pt9" height="30"&
121、gt;</p><p> <td bgcolor="#FFFFFF"><b>物品名</b></td></p><p> <td bgcolor="#FFFFFF"><b>起拍時間</b></td></p><p> <t
122、d bgcolor="#FFFFFF"><b>最高價格</b></td></p><p> <td bgcolor="#FFFFFF"><b>所有者</b></td></p><p> <td bgcolor="#FFFFFF"&g
123、t;<b>物品備注</b></td></p><p><b> </tr></b></p><p> <logic:iterate id="item" name="items" indexId="index"></p><p&
124、gt; <tr class="pt9" height="24"></p><p> <td bgcolor="#FFFFFF">< ahref='viewDetail.do?itemId=<bean:write name="item" property="id"/&g
125、t;'><bean:write name="item" property="name"/></a></td></p><p> <td bgcolor="#FFFFFF"><bean:write name="item" property="addTime&
126、quot;/></td></p><p> <td bgcolor="#FFFFFF"><bean:write name="item" property="maxPrice"/></td></p><p> <td bgcolor="#FFFFFF"
127、;><bean:write name="item" property="owner"/></td></p><p> <td bgcolor="#FFFFFF"><bean:write name="item" property="pic"/></td&g
128、t;</p><p><b> </tr></b></p><p> </logic:iterate></p><p> 商品類別的分類顯示代碼如下:</p><p> import java.util.List;</p><p> import org.yeek
129、u.service.AuctionManager;</p><p> import org.yeeku.exception.AuctionException;</p><p> import org.yeeku.struts.base.BaseAction;</p><p> import org.yeeku.model.*;</p><p
130、><b> /**</b></p><p> * @author shm songhongmei_529@163.com</p><p> * @version 1.0</p><p> * 處理商品顯示動作 </p><p><b> */</b></p><
131、;p> public class ViewItemAction extends BaseAction</p><p><b> {</b></p><p> public ViewItemAction()</p><p><b> { }</b></p><p> public
132、ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws AuctionException</p><p><b> {</b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- j2ee課程設計超市收銀系統(tǒng)
- 基于j2ee的c2c網上拍賣系統(tǒng)—畢業(yè)設計論文
- 基于j2ee的網上購物商城設計
- j2ee課程設計報告--基于ssh的個人博客系統(tǒng)
- 基于J2EE的網上訂餐系統(tǒng)設計與實現(xiàn).pdf
- 基于J2EE的網上花店管理系統(tǒng).pdf
- 基于J2EE技術的網上商城系統(tǒng)設計.pdf
- 基于J2EE網上考試系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE的網上購物系統(tǒng)設計與開發(fā).pdf
- 課程設計---基于j2ee的公交查詢系統(tǒng)的設計與實現(xiàn)
- 基于J2EE的網上考試系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE的網上辦稅系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE架構的網上閱卷系統(tǒng)設計與實現(xiàn).pdf
- 基于J2EE網上納稅綜合管理系統(tǒng)設計與實現(xiàn).pdf
- 基于J2EE的網上閱卷系統(tǒng)的設計與實現(xiàn).pdf
- 基于J2EE的網上選課系統(tǒng)設計與實現(xiàn).pdf
- 基于j2ee的網上銀行系統(tǒng)的設計與實現(xiàn)
- j2ee網上商城畢業(yè)論文
- 基于J2EE網上書店系統(tǒng)的設計與實現(xiàn).pdf
- 基于j2ee的網上書店系統(tǒng)的設計和實現(xiàn)
評論
0/150
提交評論