




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘 要JAVA語言是目前Internet上大型的WEB應(yīng)用程序開發(fā)時使用得最熱門的編程語言,本文描述了JAVA和JSP技術(shù)的特點以及在互聯(lián)網(wǎng)上的使用情況,介紹這兩種技術(shù)的重要編程方法和兩者之關(guān)的聯(lián)系,并完成一個基于這種技術(shù)的網(wǎng)上書店系統(tǒng)?!娟P(guān)鍵字】JAVA, JavaBeans, Servlet, JSP, 網(wǎng)絡(luò)編程, 電子商務(wù), 網(wǎng)上書店 目 錄前 言3第1章 概 述41.1 JSP簡介和運行原理41.2 開發(fā)背景5第2章 需求分析62.1 系統(tǒng)組成:62.2 系統(tǒng)要求配置6第3章 系統(tǒng)設(shè)計73.1 數(shù)據(jù)庫設(shè)計73.1.1 數(shù)據(jù)庫需求分析73.1.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計10第4章 詳細設(shè)計1
2、24.1 系統(tǒng)概述12411用戶界面部分12412 管理界面部分124.2 詳細代碼及說明124.2.1實現(xiàn)bookshop.run包124.2.2客戶界面設(shè)計與實現(xiàn)20第5章 系統(tǒng)測試275.1 數(shù)據(jù)庫連接275.2 檢測網(wǎng)站運行速度27第6章 總結(jié)30參考文獻31致 謝32前 言隨著計算機、 網(wǎng)絡(luò) 、通信技術(shù)的發(fā)展和日益融合,以及Internet的普及應(yīng)用,包括電子商務(wù)(EC)、視頻會議、網(wǎng)上書店等在內(nèi)的一些應(yīng)用已開始引起社會的關(guān)注,并逐步走進人們的日常生活。JSP是Sun公司推出的一種網(wǎng)站開發(fā)技術(shù),Sun公司借助自己在Java上的不凡造詣,又把人們引進JSP時代,JSP即Java Ser
3、ver Page,它可以在Servlet和JavaBean的支持下,完成功能強大的Web應(yīng)用程序。所以,在我的畢業(yè)設(shè)計中,我采用了JSP作為開發(fā)工具,構(gòu)建了一個能實現(xiàn)簡單的電子商務(wù)的小型動態(tài)商務(wù)網(wǎng)站網(wǎng)上書店銷售系統(tǒng)。通過這次的畢業(yè)設(shè)計,我了解了目前流行的動態(tài)商務(wù)網(wǎng)站的構(gòu)成和運作原理,掌握了用JSP構(gòu)建動態(tài)網(wǎng)站的相關(guān)知識和技術(shù)原理,鍛煉了自己的動手實踐能力。在這次畢業(yè)設(shè)計過程中,我得到了指導(dǎo)老師杜雪平老師的悉心指導(dǎo)。在此,我對你表示衷心的感謝!第1章 概 述1-1 JAVA語言簡介Java是一種簡單易用、完全面向?qū)ο?、具有平臺無關(guān)性且安全可靠的主要面向Internet的開發(fā)工具。自從1995年正
4、式問世以來,Java的快速發(fā)展已經(jīng)讓整個Web世界發(fā)生了翻天覆地的變化。在早期,Java比較多的用在瀏覽器上,插入到網(wǎng)頁中(即是Java Applet程序),成為最靈活、最強大的網(wǎng)頁多媒體的載體,但由于Java虛擬機相對于個人電腦而言,有占用資源大,安全性相對較差等缺點,Applet逐漸的被后起之秀Flash所替代,但隨著Java Servlet的推出,Java在電子商務(wù)方面開始嶄露頭角,最新的JSP(Java Server Page)技術(shù)的推出,更是讓Java成為基于Web的應(yīng)用程序的首選開發(fā)工具,目前的Java技術(shù)已成為所有大型電子商務(wù)項目的必然選擇。1-2 開發(fā)背景我國的網(wǎng)上書店雖然從數(shù)
5、量上取得了一定的進展,但從售量而言卻不盡人意,目前,國內(nèi)尚無一家在網(wǎng)上零售領(lǐng)域形成絕對領(lǐng)先優(yōu)勢的網(wǎng)上書店。發(fā)展比較好的寥寥無幾,比較成功的有當(dāng)當(dāng)書店()。伴隨著電子商務(wù)技術(shù)的不斷成熟,電子商務(wù)的功能也越來越強大,注冊用戶可以在網(wǎng)上搜索購買到自己想要的各種商品,初步讓人們體會到了足不出戶,便可隨意購物的快感。我的畢業(yè)設(shè)計也就正是一個電子商務(wù)系統(tǒng)的開發(fā)-網(wǎng)上商品銷售系統(tǒng)。第2章 JAVA技術(shù)簡介2-1 在Windows平臺下配置JSP運行環(huán)境為了使系統(tǒng)能夠正常運行JSP和相關(guān)程序,必須先配置好能夠使用JSP的WEB服務(wù)器。各種能使用Servlet技術(shù)的WEB服務(wù)器中,運用得最多的是Tomcat服務(wù)
6、器,如果僅是為了用于測試程序,Tomcat的配置則顯得太復(fù)雜了,本文推薦使用Resin服務(wù)器,Resin據(jù)稱是最快的Servlet運行平臺,不過限于單站點,對傳統(tǒng)的一些網(wǎng)關(guān)支持不是很好,因此對于商業(yè)網(wǎng)站而言,不是最好的選擇,不過如果僅是為了測試Servlet,這個Resin的安裝可謂有點傻瓜化。Resin比較新的版本是3.x,但目前實際用的2.x版本的比較多,Resin可到官方站點下載:本文使用的是版本,文件位置:如果你的電腦上已裝好JDK,直接把下載的resin包解壓到D:盤根目錄解壓后即為服務(wù)器的目錄,把本文的源程序jspweb文件夾也放在D:盤根目錄,即是D:jspweb為網(wǎng)站根目錄,打
7、開D:resin-2.1.13conf resin.conf(是一份XML形式的配置文件),找到doc這里改為D:jspweb,然后運行D:resin-2.1.13binhttpd.exe,在瀏覽器輸入http:/localhost:8080/j1.jsp,看到了“我是JSP!”的字樣了吧,你的Servlet服務(wù)器就這樣配置成功了,為了能編譯Servlet類,還需要做的事情是:把D:resin-2.1.13lib加入到windows的CLASSPATH的環(huán)境變量中。2-2 JSP、ASP和PHP技術(shù)之比較JSP與ASP、PHP技術(shù)都是目前網(wǎng)上最流行的在服務(wù)器端運行的腳本技術(shù),JSP能用Java
8、Beans技術(shù)封裝,達到商業(yè)邏輯的目的,ASP對應(yīng)之的是COM組件,因此兩者都能用于開發(fā)商業(yè)邏輯,PHP則更像于一個純腳本,僅適合于普通的網(wǎng)站開發(fā),而不能用作商業(yè)邏輯而被冠以“Person Home Page”的名稱,這是最貼切不過的了。JSP與ASP相比,JSP具有跨平臺、安全、強大的可伸縮性的特點,而果硬要挑一些毛病,JSP相對別的腳本更加難掌握,因為精通JSP必須精通Java語言,對于中小型項目,我們要考慮開發(fā)人員、開發(fā)速度、開發(fā)成本等問題,在這方面ASP和PHP會比JSP更容易勝出。值得一提的是,ASP的最新版本ASP.NET與原來的ASP性質(zhì)完全是不同的,它和JSP一樣,都是一種編譯
9、性的腳本,本身完全與強大的Net框架結(jié)合,完美的支持Xml的各種應(yīng)用,與昔日的ASP不可同日而語,但是無論是ASP還是ASP.NET,它都擺脫不了Windows平臺本身,這是ASP一個致命的缺點。2-3 JSP語法基礎(chǔ)2-3-1嵌入了JAVA語言的HTML文件把下面網(wǎng)頁保存為:j1.jsp這就成了一個最簡單的JSP頁面了,其中是聲明輸出的文件類型為text/html,字符編碼是gb2312,在JSP中里的內(nèi)容表示的是JSP編譯時的一些選項或向客戶端發(fā)送的頭信息的JSP指令,里的內(nèi)容就是Java語言,如果有必要,更改適當(dāng)設(shè)定,還可以使用javascript作為腳本,不過實際應(yīng)用中很少有人這樣做。
10、2-3-2 request、out & response-與訪問者的交互接收客戶端的請求和向客戶端返回信息是動態(tài)網(wǎng)頁最常做的事情,在JSP中,主要通過request、response、out 三大對象實現(xiàn)這些功能。request 對象的作用是接收用戶通過URL或通過表單向發(fā)服務(wù)器發(fā)送請求信息和與用戶計算機相關(guān)的一些信息。response 對象用于網(wǎng)頁傳回用戶端的回應(yīng)。out 用于傳送回應(yīng)的輸出,即向客戶端返回信息。 把上面的例子稍作修改:保存為j2.jsp在瀏覽器上輸入:“http:/localhost:8080/j1.jps?msg=我是JSP”看一下效果,這和j1.jsp的結(jié)果一樣
11、吧?但它輸出的是客戶端返回的信息,這在意義上完全不同于前者。2-3-3 session-保持訪問者的會話狀態(tài)會話狀態(tài)維持是 Web 應(yīng)用開發(fā)者必須面對的問題。有多種方法可以用來解決這個問題,如使用 Cookies 、隱藏的表單輸入域,或直接將狀態(tài)信息附加到 URL 中。Java Servlet 提供了一個在多個請求之間持續(xù)有效的會話對象,該對象允許用戶存儲和提取會話狀態(tài)信息,JSP也內(nèi)置了這個對象。Session最基本的用法是:創(chuàng)建一個會話 session.putValue("名稱","值");獲得一個會話的值session.getValue("
12、;名稱");2-3-4 JSP其它基本內(nèi)置對象JSP有九大內(nèi)置對象,除了上述四種以外,還包括:pageContext 網(wǎng)頁的屬性是在這里管理 application Servlet正在執(zhí)行的內(nèi)容 config Servlet的構(gòu)架部件 page JSP網(wǎng)頁本身 exception 針對錯誤網(wǎng)頁,未捕捉的例外這些基本的內(nèi)置對象是構(gòu)成JSP頁面的重要因子。第3章 系統(tǒng)設(shè)計本系統(tǒng)采用三層架構(gòu)設(shè)計,它的工作原理如圖3-1所示。圖3-1三層架構(gòu)模型采用三層構(gòu)架以后,用戶界面層通過統(tǒng)一的接口向業(yè)務(wù)層發(fā)送請求,業(yè)務(wù)層按自己的邏輯規(guī)則將請求處理之后進行數(shù)據(jù)庫操作,然后將數(shù)據(jù)庫返回的數(shù)據(jù)封裝成類的形式
13、返回給用戶界面層。3.1數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率,以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致。3.1.1 數(shù)據(jù)庫需求分析針對一般在線書店的需求,得出如下需求信息。§ 用戶分為游客和已注冊用戶。§ 訂單分為單張詳細訂單和總訂單。§ 一個用戶可以購買多本圖書。§ 一個用戶對應(yīng)一張訂單。§ 一個列表對應(yīng)多張訂單。針對本系統(tǒng)功能分析,總結(jié)出如下的需求信息。§ 用戶,包括數(shù)據(jù)項:用戶ID、用戶名、密碼。§ 圖書,包括
14、數(shù)據(jù)項:圖書編號、圖書名、價格、圖書介紹。§ 訂單列表,包括數(shù)據(jù)項:訂單編號、圖書編號、購書數(shù)量。§ 訂單,包括數(shù)據(jù)項:訂單編號、用戶編號、下單時間。從本系統(tǒng)中規(guī)劃出的實體有:用戶實體、圖書實體、訂單實體、訂單列表實體。訂購用戶訂單列表訂單圖書實體之間關(guān)系的E-R圖如圖3-5所示。1 1NN 圖3-5實體關(guān)系E-R圖用戶信息實體的E-R圖如圖3-6所示。圖書實體的E-R圖如圖3-7所示。訂單實體的E-R圖如圖3-8所示。訂單列表實體的E-R圖如圖3-9所示。圖書圖書編號圖書名稱分類編號封面圖3-6 圖書實體E-R圖用戶用戶名密碼用戶編號E-mail 圖3-7 用戶實體E-R
15、圖訂單訂單編號用戶編號圖書編號訂購數(shù)量圖3-8 訂單實體E-R圖訂單列表訂單號用戶編號圖書編號是否付款 圖3-9 訂單列表實體E-R圖3.1.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 在線書店數(shù)據(jù)庫中各個表的設(shè)計結(jié)果如下面的標(biāo)和所示。表3.1為圖書信息列表book。表3.1圖書信息表book字段名數(shù)據(jù)類型長度允許空說明IDint4自動編號,主鍵booknameint4書名bookclassvarchar255圖書類別authorvarchar100yes圖書作者publishfloat8yes出版社bookNovarchar100yes書號Contenttext16yes內(nèi)容介紹pricetinyint1yes
16、價格Amountint4yes總數(shù)量Leav_numberint4yes庫存量pictureint4yes封面reg_timedatetime8yes入庫時間表3.2為用戶信息列表shop_user。表3.2用戶信息表shop_user字段名數(shù)據(jù)類型長度允許空說明IDint4自動編號,會員編號usernamevarchar4no用戶名passwordvarchar100no密碼Namesint4yes會員級別Sexvarchar50yes名字Addrvarchar50yes地址Phonevarchar25yes電話Postvarchar25yes郵編Emailvarchar25yes郵箱Ret
17、imedatetime8yes注冊時間RegIpAddrvarchar20yes注冊ip表3.3為訂單表,記錄訂單信息orders。表3.3訂單信息表orders字段名數(shù)據(jù)類型長度允許空說明IDint4yes自動編號,訂單編號order_idint4yes會員編號user_idint4yes圖書編號quantityint4yes訂購數(shù)量submit_timedatetime8yes提交訂單時間consignmentTimedatetime8yes交貨時間totalpricefloat8yes總價contentvarchar20yes備注ipAddrvarchar20yes用戶ipisPayof
18、fint11yes是否付款isSaleint11yes是否發(fā)貨表3.4為訂單列表,記錄訂單列表信息allorder。表3.4 訂單列表allorder 字段名數(shù)據(jù)類型長度允許空說明IDint4自動編號,卡類型編號orderIDint11yes訂單號BookNoint11yes書號Amountint11yes數(shù)量表3.5書店管理員信息表,記錄管理員信息bookadmin。表3.5 管理員信息表bookadmin字段名數(shù)據(jù)類型長度允許空說明AdminUservarchar20管理員用戶名AdminPassvarchar50 yes管理員密碼表3.6圖書分類信息表,記錄圖書分類信息bookclass
19、。表3.6 圖書分類表 bookclass字段名數(shù)據(jù)類型長度允許空說明IDint4自動編號,卡類型編號Classnamevarchar30yes圖書類別第4章 詳細設(shè)計4.1 系統(tǒng)概述411用戶界面部分圖書選購(可按分類查找圖書,或者通過關(guān)鍵字進行查詢)。購物車功能。查看圖書詳細信息。用戶注冊。用戶登錄。查看用戶的訂單信息。修改用戶個人信息。412 管理界面部分現(xiàn)有圖書管理:修改,刪除,查看。用戶管理:查看,修改,刪除。訂單管理:查看訂單清單,更新訂單付款,出貨狀態(tài),刪除訂單。添加新圖書。添加圖書分類。4.2 詳細代碼及說明4.2.1實現(xiàn)bookshop.run包1:login.java這是一
20、個以客戶為中心的交易平臺,只有成為了系統(tǒng)的合法用戶才能夠使用這個系統(tǒng),因此需要檢驗每個用戶的合法性,管理用戶登錄的login.java正是要完成這樣的功能。類中定義了個private屬性和他們對應(yīng)的setX()/getX()方法和默認構(gòu)造函數(shù)和execute() getSql() 操作。private屬性分別是:private String username;/登錄用戶名 private String passwd;/登錄密碼 private boolean isadmin;/是否管理員登錄 private long userid=0;/用戶ID號 重要操作:主要介紹execute()exec
21、ute()操作功能:從數(shù)據(jù)庫中查詢用戶信息。返回值:boolean型,如果取值成功返回true,否則,返回false。設(shè)計思路:獲得數(shù)據(jù)庫連接對象Connection 對象,ResultSet對象和Statement對象 調(diào)用getSql()方法獲得sql語句執(zhí)行sql語句。程序主干部分代碼:public boolean execute() throws Exception try con=DataBase.getConnection(); stmt=con.createStatement(); rs = stmt.executeQuery(getSql(); catch(Exception
22、e) e.printStackTrace(); while (rs.next() if (!isadmin) userid = rs.getLong("id"); flag = true; 2:op_book.java該類主要負責(zé)圖書的管理,包括圖書的修改,查詢,刪除和添加等。op_book類有以下屬性: private book abooks = new book(); /新的圖書類 private javax.servlet.http.HttpServletRequest request; /建立頁面請求 private boolean sqlflag = true ;
23、 /對接收到的數(shù)據(jù)是否正確 private Vector booklist; /顯示圖書列表向量數(shù)組 private int page = 1; /顯示的頁碼 private int pageSize=5;/每頁顯示的圖書數(shù) private int pageCount =0;/頁面總數(shù) private long recordCount =0; /查詢的記錄總數(shù) public String sqlStr="" op_book類有以下方法(省去了屬性對應(yīng)的getX()/setX()方法):book_search();完成圖書查詢,包括分類,關(guān)鍵字查詢。 delete();負責(zé)圖
24、書的刪除。 getOnebook();主要完成圖書的單本查詢,用于支持頁面的“查看詳細信息”。 insert();負責(zé)圖書的添加。 to_String();把字符串以“ISO 8859-1”編碼形式輸出,使頁面正常顯示。 update();負責(zé)修改圖書信息。 getRequest();負責(zé)接受頁面?zhèn)鬟f過來的參數(shù),分解并將參數(shù)存放到abooks對象中。重要操作:主要介紹getRequest() getRequest()方法功能:負責(zé)從頁面接受表單數(shù)據(jù)并分解,設(shè)置abooks對象相應(yīng)屬性。參數(shù)設(shè)計:頁面?zhèn)鬟f的Request對象,其中包括表單數(shù)據(jù)。 返回值:boolean型,true表示成功,否則返
25、回false。 設(shè)計思想:獲取頁面?zhèn)鬟f的Request對象分解Request對象獲取表單參數(shù)值把參數(shù)值設(shè)置成圖書對象abooks相對應(yīng)的屬性值。 程序主干代碼: ervletRequest newrequest) request = newrequest; String BookName = request.getParameter("BookName"); abooks.setBookName(to_String(BookName); String author = request.getParameter("author"); abooks.setA
26、uthor(to_String(author); String publish = request.getParameter("publish"); abooks.setPublish(to_String(publish); String bookclass = request.getParameter("bookclass"); abooks.setBookClass(bc); String bookno = request.getParameter("bookno"); abooks.setBookNo(to_String(boo
27、kno); String picture = request.getParameter("picture"); abooks.setPicture(to_String(picture); price =new Float(request.getParameter("price").floatValue(); abooks.setPrice(price); amount = new Integer(request.getParameter("amount").intValue(); abooks.setAmount(amount); S
28、tring Content = request.getParameter("Content"); abooks.setContent(to_String(Content); . 3:op_user.java: 為了使用上的方便,我們把對用戶的管理,包括用戶的添加,刪除,修改,查詢等集合成一個管理類。 該類具有以下屬性: private user user = new user(); /新的用戶對象 private javax.servlet.http.HttpServletRequest request; /建立頁面請求 private Vector userlist;/顯
29、示用戶列表向量數(shù)組 private int page = 1;/顯示的頁碼 private int pageSize=8;/每頁顯示的圖書數(shù) private int pageCount =0;/頁面總數(shù) private long recordCount =0; /查詢的記錄總數(shù) private String message = "" /出錯信息提示 private String username = "" /注冊后返回的用戶名 private long userid = 0; /注冊后返回的用戶ID該類具有的主要方法(省去了屬性相關(guān)的getX()/set
30、X()操作): add():負責(zé)用戶的添加。 delete():負責(zé)刪除指定ID的用戶。 get_alluser():取出書店所有用戶的信息。 getGbk():返回指定字符串的GBK編碼。 getUserinfo():負責(zé)取得用戶的詳細信息。 update():負責(zé)修改用戶資料。 getRequest():獲取表單數(shù)據(jù),并分解存儲。4:op_buy.java我們把業(yè)務(wù)邏輯和對訂單以及和訂單列表的管理集成到了該類當(dāng)中。該類具有以下屬性: private javax.servlet.http.HttpServletRequest request; /建立頁面請求 private HttpSess
31、ion session; /頁面的session; private boolean sqlflag = true; /對接收到的數(shù)據(jù)是否正確 private Vector purchaselist; /顯示圖書列表向量數(shù)組 private Vector allorder; /訂購單列表 private Vector order_list; /訂單清單列表 private int booknumber = 0; /購書總數(shù)量 private float all_price = 0; /購書總價錢 private boolean isEmpty = false; /庫中的書數(shù)量是否夠購買的數(shù) pr
32、ivate int leaveBook = 0; /庫存數(shù)量 private String orderId = "" /用戶訂單號 private boolean isLogin = true; /用戶是否登錄! private int page = 1; /顯示的頁碼 private int pageSize = 15; /每頁顯示的訂單數(shù) private int pageCount = 0; /頁面總數(shù)private long recordCount = 0; /查詢的記錄總數(shù)該類的主要操作(省去了屬性相關(guān)的getX()/setX()操作)addnew():負責(zé)向購物車
33、中添加新購買的圖書。delete():負責(zé)從數(shù)據(jù)庫中刪除指定ID的訂單。modiShoper():負責(zé)修改購物車中已選的圖書。delShoper():負責(zé)刪除購物車中的物品。getAllorder():負責(zé)從數(shù)據(jù)庫中的訂單列表中查詢指定用戶的訂單列表。getGbk():獲得指定字符串的GBK編碼。getOrder():獲得單個訂單對象。payout():提交購物車,把訂單插入到數(shù)據(jù)庫中。update():該方法負責(zé)當(dāng)用戶付款后,把數(shù)據(jù)中對應(yīng)訂單的是否付款標(biāo)記修改成已付狀態(tài)。重要操作:主要介紹addnew() addnew()方法功能:負責(zé)向購物車中添加一條新記錄。參數(shù)設(shè)計:頁面?zhèn)鬟f的reque
34、st對象。返回值:boolean類型,成功返回true,否則返回false。設(shè)計思路:從頁面獲得表單數(shù)據(jù)(request對象中)-獲得圖書編號等參數(shù)值判斷購買數(shù)量是否合法如果是可以操作,否則不能操作判斷是否第一次購買如果是第一次購買,按第一次購買操作否則查詢購買列表,找是否有相應(yīng)項,有則直接修改數(shù)量否則添加新記錄。函數(shù)代碼: public boolean addnew(HttpServletRequest newrequest) throws Exception request = newrequest; String ID = request.getParameter("booki
35、d"); String Amount = request.getParameter("amount"); long bookid = 0; int amount = 0; try bookid = Long.parseLong(ID); amount = Integer.parseInt(Amount); catch (Exception e) return false; if (amount < 1) return false; session = request.getSession(false); if (session = null) return
36、false; purchaselist = (Vector) session.getAttribute("shopcar"); String sqlStr = "select leav_number from book where id=" + bookid; try con=DataBase.getConnection(); stmt=con.createStatement(); rs = stmt.executeQuery(sqlStr); if (rs.next() if (amount > rs.getInt(1) leaveBook =
37、rs.getInt(1); isEmpty = true; return false; DataBase.closeResultSet(rs); DataBase.closeStatement(stmt); DataBase.closeConnection(con); catch (SQLException e) return false; allorder iList = new allorder(); iList.setBookNo(bookid); iList.setAmount(amount); boolean match = false; /是否購買過該圖書 if (purchase
38、list = null) /第一次購買 purchaselist = new Vector(); purchaselist.addElement(iList); else / 不是第一次購買 for (int i = 0; i < purchaselist.size(); i+) allorder itList = (allorder) purchaselist.elementAt(i); if (iList.getBookNo() = itList.getBookNo() itList.setAmount(itList.getAmount() + iList.getAmount();
39、purchaselist.setElementAt(itList, i); match = true; break; /if name matches結(jié)束 / for循環(huán)結(jié)束 if (!match) purchaselist.addElement(iList); session.setAttribute("shopcar", purchaselist); return true; 4.2.2客戶界面設(shè)計與實現(xiàn)1:界面頭和界面尾設(shè)計。 為了提高代碼的重用性,我把客戶界面部分相同的頭和尾作成兩個獨立的塊,分別命名為 head.inc和tail.inc。這兩個文件是單純的html
40、代碼,在jsp頁面中只要通過以下語句就可以實現(xiàn)對兩個文件的調(diào)用: <%include file=/bookshop/inc/head.inc”%> < %include file=/bookshop/inc/head.inc”%>他們的效果如下圖4-1:圖4-1界面頭和尾部分顯示效果用戶登錄界面login.jsp代碼如下: <%page contentType="text/html;charset=gb2312"%><% page session="true" %><link rel="st
41、ylesheet" href="css.css" type="text/css"><jsp:useBean id="login" scope="page" class="bookshop.run.login" /><% String mesg = ""if( request.getParameter("username")!=null && !request.getParameter("usern
42、ame").equals("")String username =request.getParameter("username");String passwd = request.getParameter("passwd");username = new String(username.getBytes("ISO8859-1");passwd = new String(passwd.getBytes("ISO8859-1");login.setUsername(username);lo
43、gin.setPasswd(passwd);/out.print(username+passwd);if (login.execute()session.setAttribute("username",username);String userid = Long.toString(login.getUserid();session.setAttribute("userid",userid);response.sendRedirect("booklist.jsp");%><%else mesg = "登錄出錯!&q
44、uot;%>2:用戶登錄模塊的設(shè)計。為了檢驗用戶是否合法,所以需要輸入用戶名和密碼來驗證用戶的合法性,用戶登錄模塊剛好完成這樣的一個功能。該模塊需要用到login.java(見4.4.3 1)這個bean。需要設(shè)計一個表單讓用戶輸入信息。效果圖如下:圖4-2圖4-2用戶登錄界面3.在線購書功能模塊設(shè)計。 在該模塊用戶可以看見書店現(xiàn)有的樣子,用戶可以查找書通過分類,關(guān)鍵字查找。戶可以購買圖書,頁可以查看圖書的詳細資料,還可以跳轉(zhuǎn)到其他的模塊,例如查看購物車,查看訂單信息等。在這個模塊中我們要用到JavaBean有,三個JavaBean。對于他們的介紹我已經(jīng)在前面介紹了這里就不在一一羅列了。
45、詳情見4.2和4.3 其中我把導(dǎo)航條抽出來單獨作為一個模塊:sub.inc 左邊的查找框也單獨設(shè)計成一個模塊:left.inc兩個純粹的html代碼部分,在jsp頁面中直接調(diào)用。效果如下圖4-3所示:圖4-3在線購書模塊效果顯示在線購書頁面模塊booklist.jsp代碼如下: <%page contentType="text/html;charset=gb2312"%><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><
46、;% page import="java.util.*" %><% page import="bookshop.book.bookclass" %><% page session="true" %><% page import="bookshop.book.book"%><jsp:useBean id="book" scope="page" class="bookshop.book.book" />&l
47、t;jsp:useBean id="book_list" scope="page" class="bookshop.run.op_book" /><jsp:useBean id="classlist" scope="page" class="bookshop.run.op_bookclass" /><% int pages=1;String mesg = ""if (request.getParameter("page&q
48、uot;)!=null && !request.getParameter("page").equals("") String requestpage = request.getParameter("page");try pages = Integer.parseInt(requestpage); catch(Exception e) mesg = "你要找的頁碼錯誤!"book_list.setPage(pages);%>4:購物車模塊頁面設(shè)計。 在購物車這個模塊當(dāng)中用戶可以修改購買數(shù)量,可以
49、刪除已選圖書,可以提交購物車,也可以清空購物車,同時也可以繼續(xù)購書。在這個模塊中我們用到了,三個JavaBean.關(guān)于他們的介紹在前面已經(jīng)羅列出來了這里就不在一一說明了。該模塊運行時效果如圖4-4所示:圖4-4購物車模塊顯示效果頁面核心代碼如下shopcar.jsp:<%page contentType="text/html;charset=gb2312"%><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><% pag
50、e import="java.util.*" %><% page session="true" %><% page import="bookshop.book.*"%><% page import="bookshop.run.op_book" %><% page import="bookshop.run.op_buy" %><jsp:useBean id="book_list" scope="page&qu
51、ot; class="bookshop.run.op_book" /><jsp:useBean id="classlist" scope="page" class="bookshop.run.op_bookclass" /><jsp:useBean id="shop" scope="page" class="bookshop.run.op_buy" /><% String userid = (String) sessio
52、n.getAttribute("userid");if ( userid = null )userid = ""String modi = request.getParameter("modi");String del = request.getParameter("del");String payoutCar = request.getParameter("payout");String clearCar = request.getParameter("clear");St
53、ring mesg = ""if (modi!=null && !modi.equals("") if ( !shop.modiShoper(request) )if (shop.getIsEmpty()mesg = "你要的修改購買的圖書數(shù)量不足你的購買數(shù)量!"elsemesg = "修改購買數(shù)量出錯!" else mesg = "修改成功"else if ( del != null && !del.equals("") ) if ( !shop.delShoper(request) ) mesg = &qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)品數(shù)字化交易平臺開發(fā)協(xié)議
- 年度企業(yè)文化建設(shè)與員工關(guān)懷計劃設(shè)計方案
- 聲聲慢:高中語文詩詞教學(xué)教案
- 水泥電桿銷售合同
- 語言之美:修辭手法與表達技巧
- 工業(yè)園區(qū)生產(chǎn)流水線供應(yīng)合同
- 季度銷售工作總結(jié)與業(yè)績分析報告
- 新零售行業(yè)線下實體店運營策略設(shè)計
- 企業(yè)危機公關(guān)事件處理預(yù)案
- 倉儲物流系統(tǒng)運營合作協(xié)議
- 醫(yī)學(xué)教程 常見動物咬蟄傷應(yīng)急救護課件
- 中學(xué)校園廣播聽力系統(tǒng)管理制度
- 組合型浮式防波堤水動力響應(yīng)與消浪性能研究
- 商業(yè)綜合體應(yīng)急預(yù)案編制與演練效果評估考核試卷
- GB/T 44679-2024叉車禁用與報廢技術(shù)規(guī)范
- 智鼎在線測評的題
- 2-3《書的歷史》(教學(xué)設(shè)計)二年級科學(xué)上冊 教科版
- 廣告學(xué)概論課件
- 可上傳班級管理(一到三章)李學(xué)農(nóng)主編
- 醫(yī)院環(huán)境衛(wèi)生學(xué)監(jiān)測和院感控制課件
- 春天古詩模板
評論
0/150
提交評論