單元3 購物網站商品展示與查詢模塊設計(JSP+Servlet+JDBC)_第1頁
單元3 購物網站商品展示與查詢模塊設計(JSP+Servlet+JDBC)_第2頁
單元3 購物網站商品展示與查詢模塊設計(JSP+Servlet+JDBC)_第3頁
單元3 購物網站商品展示與查詢模塊設計(JSP+Servlet+JDBC)_第4頁
單元3 購物網站商品展示與查詢模塊設計(JSP+Servlet+JDBC)_第5頁
已閱讀5頁,還剩74頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單元3購物網站商品展示與查詢模塊設計(JSP+Servlet+JDBC)

對于一個基于數據庫開發的Web應用系統,通常將系統相關的數據存放在后臺的數據庫中,Web頁面都需要訪問數據庫,即從數據表中讀取數據,向數據表中新增記錄或者修改、刪除數據表中的數據記錄。 JavaWeb應用程序訪問數據庫,首先需要實現JSP應用程序與數據庫的連接,JDBC(JavaDataBaseConnectivity,數據庫連接)是Java程序連接關系數據庫的標準,由一組用Java語言編寫的類和接口組成。

對Java程序開發者來說,JDBC是一套用于執行SQL語句的JavaAPI,通過調用JDBC就可以在獨立于后臺數據庫的基礎上完成對數據庫的操作;對數據庫廠商而言,JDBC只是接口模型,數據庫廠商開發相應的JDBC驅動程序,就可以使數據庫通過Java語言進行操作了。【知識梳理】1.JDBC的實現原理 JDBC主要通過java.sql包提供的API供Java程序開發者使用,驅動程序廠商則通過實現這些接口封裝各種對數據庫的操作。 JDBC為多種關系數據庫提供了統一訪問接口,它可以向相應數據庫發送SQL調用,將Java語言和JDBC結合起來,程序員只需編寫一次程序就可以讓它在任何平臺上運行。 JDBC可以說是Java程序開發者和數據庫廠商之間的橋梁,Java程序開發者和數據庫廠商可以在統一的JDBC標準之下,負責各自的工作范圍。

同時,任何一方的改變對另一方都不會造成顯著的影響。 JDBC的作用概括起來包括以下幾方面:

①建立與數據庫的連接;

②向數據庫發出查詢請求;

③處理數據庫的返回結果。2.使用JDBC訪問數據庫(1)注冊與加載連接數據庫的驅動程序(2)創建與數據庫的連接(3)通過連接對象獲取指令對象(4)使用指令對象執行SQL語句(5)獲取結果集,且對結果集做相應處理(6)釋放資源3.JDBC的DriverManager類 DriverManager類是java.sql包中用于管理數據庫驅動程序的類,根據數據庫的不同,注冊、裝載相應的JDBC驅動程序,JDBC驅動程序負責直接連接相應的數據庫。

在DriverManager類中存有已注冊的驅動程序清單,當調用DriverManager類的方法getConnection時,它將檢查清單中的所有驅動程序,一直找到可與URL中指定的數據庫進行連接的驅動程序為止。只要加載了合適的驅動程序,DriverManager對象就開始管理連接。4.JDBC的Connection接口 Connection接口負責連接數據庫并完成傳送數據的任務,與特定數據源建立連接是進行數據庫訪問操作的前提。

一個Connection對象代表與數據庫的一個連接。

連接過程包括執行的SQL語句和在該連接上所返回的結果。

只有在成功建立連接的前提下,SQL語句才可能被傳遞到數據庫,最終被執行并返回結果。 Connection接口的主要方法如下所示。

①StatementcreateStatement():創建一個Statement對象。

②StatementcreateStatement(intresultSetType,intresultSetConcurrency):創建一個Statement對象,它將生成具有特定類型和并發性的結果集。

③voidcommit():提交對數據庫的改變并釋放當前持有的數據庫的鎖。

④voidrollback():回滾當前事務中所有改變并釋放當前連接持有的數據庫的鎖。

⑤booleanisClose():判斷連接是否已關閉。

⑥booleanisReadOnly():判斷連接是否為只讀模式。

⑦voidsetReadOnly():設置連接的只讀模式。

⑧voidclearWarning():清除連接的所有警告信息。

⑨voidclose():立即釋放連接對象的數據庫和JDBC資源。5.JDBC的Statement接口 Statement接口由Connection接口產生,用于在已經建立的連接的基礎上向數據庫發送SQL語句,包括查詢、新增、修改和刪除等操作。 Statement接口提供了3種執行SQL語句的方法:executeQuery、executeUpdate和execute。

使用哪一個方法由SQL語句所產生的內容決定。(1)ResultSetexecuteQuery(StringstrSql)

這種方法的執行結果將返回單個結果集,主要用于在Statement對象中執行SQL查詢語句,并返回該查詢生成的ResultSet對象。(2)intexecuteUpdate(StringstrSql)

這種方法用于執行Insert、Update、Delete和SQLDDL(數據定義語言)語句,返回一個整數值,表示執行SQL語句影響的數據行數。(3)booleanexecute(Stringsql)

這種方法是執行SQL語句調用的一般方法,允許用戶執行SQL數據定義命令,然后獲取一個布爾值,顯示是否返回了ResultSet對象。用于執行返回多個結果集、多個更新結果或兩者組合的語句。6.JDBC的ResultSet接口 ResultSet接口負責保存Statement執行后返回的查詢結果。 ResultSet對象實際上是一個由查詢結果數據構成的表,在ResultSet中隱含著一個指針,利用這個指針移動數據行,可以取得所要的數據,或者對數據進行簡單的操作。 ResultSet接口的常用方法如下所示。(1)voidfirst():將記錄指針移動到記錄集的第一行。(2)voidlast():將記錄指針移動到記錄集的最后一行。(3)voidprevious():將記錄指針從當前位置向前移動一行。(4)voidnext():將記錄指針從當前位置向后移動一行。(5)voidbeforeFistr():將記錄指針移動到記錄集的第一行之前。(6)voidafterLast():將記錄指針移動到記錄集的最后一行之后。(7)booleanabsolute(introw):將記錄指針移動到記錄集中給定編號的行。(8)booleanisFirst():如果記錄指針位于記錄集的第一行,則返回true,否則返回false。(9)booleanisLast():如果記錄指針位于記錄集的最后一行,則返回true,否則返回false。(10)booleanisBeforFirst():如果記錄指針位于記錄集的第一行之前,則返回true。(11)booleanisAfterLast():如果記錄指針位于記錄集的最后一行之后,則返回true。(12)intgetRow():獲取當前行的編號。7.JDBC的PreparedStatement接口 PreparedStatement接口繼承自Statement接口,PreparedStatement實例包含已編譯的SQL語句,其執行速度要快于Statement對象。8.EL表達式語言簡介 EL(ExpressionLanguage,EL)表達式語言是JSP2.0中引入的一種計算和輸出Java對象的簡單語言,可以簡化在JSP開發中對對象的引用,從而規范頁面代碼,增強程序的可讀性和可維護性。

如今EL表達式是一項成熟、標準的技術,只要安裝的Web服務器能夠支持Servlet2.4/JSP2.0,就可以在JSP頁面中直接使用EL表達式。9.OGNL(對象圖導航語言)簡介 OGNL(Object-GraphNavigationLanguage,對象圖導航語言),它是一種功能強大的表達式語言(ExpressionLanguage,EL),通過它簡單一致的表達式語法,可以存取對象的任意屬性,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉化等功能。

它使用相同的表達式去存取對象的屬性,這樣可以更好地取得數據。 OGNL是通常要結合Struts2的標簽一起使用,主要是#、%和$這3個符號的使用。(1)#符號 #符號的用途一般有以下3種。

①訪問OGNL上下文和Action上下文,#相當于ActionContext.getContext(),#session.msg表達式相當于ActionContext.getContext().getSession().getAttribute("msg")。 ActionContext常用的屬性如下所示: parameters包含當前HTTP請求參數的Map,#parameters.id[0]相當于request.getParameter

("id").get(0)。 request包含當前HttpServletRequest的屬性的Map,#request.userName相當于request.get

Attribute("userName")。 session包含當前HttpSession的屬性的Map,#session.userName相當于session.getAttribute

("userName")。 application包含當前應用的ServletContext的屬性的Map,#application.userName相當于application.getAttribute("userName")。

②用于過濾和投影(projecting)集合,如persons.{?#this.age>25},persons.{?#=='

pla1'}.{age}[0]。

③用來構造Map,如#{'foo1':'bar1','foo2':'bar2'}。(2)%符號 %符號的用途是在標志的屬性為字符串類型時,計算OGNL表達式的值,這個類似js中的eval。(3)$符號 $符號主要有兩個方面的用途。

其一是在國際化資源文件中,引用OGNL

表達式,例如,國際化資源文件中的代碼:reg.agerange=年齡必須在${min}同${max}之

間。其二是在Struts2框架的配置文件中引用OGNL表達式。【應用技巧】

本單元的應用技巧如下所示。

①使用JDBC訪問數據庫。

②EL表達式的正確使用。

③實體對象及其方法的正確使用。【環境創設】 ①下載并安裝數據庫管理系統SQLServer2008。

②下載MicrosoftSQLServer2008JDBCDriver,即sqljdbc4.jar。

③準備開發Web應用程序所需的圖片文件和JavaScript文件。

④在MicrosoftSQLServer2008中創建數據庫eshop,并在該數據庫中創建“商品數據表”、“商品類型表”和“用戶表”,其結構信息分別如表3-1、表3-2和表3-3所示。字段名數據類型字段名數據類型商品IDint售出數量int商品編碼nvarchar(10)圖片地址nvarchar(100)商品名稱nvarchar(100)大圖片地址nvarchar(100)型號參數nvarchar(100)上架時間smalldatetime價格money是否推薦bit優惠價格money商品類型int庫存數量int表3-1“商品數據表”的結構信息字段名數據類型字段名數據類型類型IDint層次int類型名稱nvarchar(20)父類IDint表3-2“商品類型表”的結構信息字段名數據類型字段名數據類型用戶IDintEmailnvarchar(50)用戶名nvarchar(30)用戶類型nvarchar(20)密碼nvarchar(10)頭像nvarchar(50)表3-3“用戶表”的結構信息

⑤在計算機的【資源管理器】中創建文件夾unit03。

⑥啟動Eclipse,設置工作空間為unit03,然后進入Eclipse的開發環境。

⑦在Eclipse集成開發環境中配置與啟動Tomcat服務器。

⑧在Eclipse集成開發環境中新建動態Web項目project03。

⑨將文件sqljdbc4.jar拷貝到Web項目project03的文件夾“WebContent\WEB-INF\lib”下,并在Eclipse集成開發環境的“項目資源管理器”刷新Web項目project03。

⑩在Eclipse集成開發環境中創建包package03。【任務描述】【任務3-1】創建JSP頁面task3-1.jsp,并在頁面中動態顯示商品數據

①在Web項目project03中創建JSP頁面task3-1.jsp。

②在JSP頁面中通過JDBC連接SQLServer2008數據庫“eshop”。

③將“商品數據表”中前5條記錄的商品名稱、型號參數、價格及圖片顯示在頁面中。【任務3-2】使用JSP+Servlet+JavaBean獲取數據,并在頁面中動態顯示商品數據

①創建名為“GoodsInfo”的類,該類是一個JavaBean,在該類定義多個屬性及相應的getXXX()與setXXX()方法。

②創建名為“ConnDB”的類,該類主要用于連接數據庫,執行數據查詢和關閉數據庫的連接。

③創建名為“GoodsServlet”的Servlet類,該類主要實現查詢操作,從數據表中獲取所需的數據。

④創建JSP頁面goodsSearch3-2.jsp,在該頁面主要用于輸出從數據表查詢獲取的商品數據。

⑤創建JSP頁面task3-2.jsp,該頁面用于重定向到Servlet映射地址GoodsServlet,并傳遞keywords參數。圖3-1在頁面goodsSearch3-2中動態顯示商品數據的流程【任務實施】【網頁結構設計】

本單元將會創建多個網頁,其主體結構的HTML代碼如表3-4所示。行號HTML代碼010203040506070809101112<divid="filterPage"><!--公用頭部導航--><navclass="navnav-subprw"></nav><!--用于取出搜索關鍵字--><divclass="search-boxw"style="position:relative;top:0;margin-top:10px;"></div><divid="resultMsg"class="wf14search-result"></div><divclass="search-listw"><ulclass="my-order-listpro-listlist-ui-c"id="productList"><li><divclass="wbox"><divclass="pro-img"></div><divclass="pro-info"></div>表3-4單元3網頁主體結構的HTML代碼行號HTML代碼1314151617181920212223242526

</div><spanclass="arrow"></span></li></ul></div><divid="more_loadw"></div><divid="BottomSearchDiv"class="search-boxwmt10"></div><!--公用尾部--><footerclass="footerw"><divclass="tr"></div><ulclass="list-ui-afoot-listtc"></ul><divclass="tccopyright"></div></footer></div>續表【網頁CSS設計】

在DreamweaverCS6開發環境中創建兩個CSS文件:base.css和view.css,base.css文件中主要的CSS代碼如表3-5所示,view.css文件中主要的CSS代碼如表3-6所示。

這兩個CSS文件具體的代碼見本書提供的電子資源。【靜態網頁設計】行號CSS代碼行號CSS代碼0102030405060708091011121314151617181920212223242526.search-box{position:absolute;height:29px;width:100%;top:4px;}.search-boxinput[type="search"]{height:29px!important;line-height:27px;font-size:14px;border-radius:29px;padding:030px05px;width:90%!important;margin:0auto;border:1pxsolid#fff;border-bottom:none;background:#fff;color:#999;-webkit-box-sizing:border-box;overflow:hidden;position:absolute;left:5%;z-index:10;}.search-box.search-btn{position:absolute;3637383940414243444546474849505152535455565758596061.list-ui-cli{border-bottom:1pxsolid#ccc;padding:2px0;}.list-ui-clip{margin:2px0;}.wbox{display:-webkit-box;}.pro-list{font-size:14px;}.pro-listli{position:relative;padding:10px0;}.pro-listli.pro-img{margin-right:10px;}.pro-listli.pro-imga{display:block;height:100%;}表3-5

base.css文件的主要CSS代碼行號CSS代碼行號CSS代碼272829303132333435

width:17px;height:17px;right:22px;top:6px;background:url(../images/seacher.png)no-repeat00;z-index:11;background-size:contain;}626364656667686970.pro-listli.pro-info{overflow:hidden;-webkit-box-flex:1;}.pro-listli.pro-infop{margin-bottom:5px;width:90%;}續表行號CSS代碼行號CSS代碼010203040506070809101112#filterPage{box-shadow:5px05px#ccc;position:relative;z-index:100;}.search-result{height:29px;line-height:29px;text-indent:10;text-align:center;display:block;}131415161718192021222324.pro-listli.arrow{display:block;position:absolute;right:0px;top:52px;width:12px;height:15px;background-size:contain;background-image:url(../images/arrow1.png);background-repeat:no-repeat;}表3-6

view.css文件的主要CSS代碼圖3-2網頁unit03.html的瀏覽效果【網頁功能實現】【任務3-1】創建JSP頁面task3-1.jsp,并在頁面中動態顯示商品數據(1)創建JSP頁面task3-1.jsp

在項目project03中創建一個JSP頁面task3-1.jsp。(2)引入必要的包及相關類

首先編寫以下代碼引入必要的包及相關類:<%@pageimport="java.sql.Connection"%><%@pageimport="java.sql.*"%>(3)引入所需的CSS樣式文件

在JSP頁面task3-1.jsp中<head>和</head>之間編寫代碼,引入所需的CSS樣式文件和JavaScript文件。(4)編寫代碼連接與訪問數據庫

在JSP頁面task3-1.jsp中編寫連接與訪問數據庫的JSP代碼,代碼如表3-11所示。(5)編寫代碼顯示從數據表獲取的商品數據(6)運行程序輸出結果行號JSP代碼01020304050607

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論