JavaWeb應(yīng)用開(kāi)發(fā)全套課件_第1頁(yè)
JavaWeb應(yīng)用開(kāi)發(fā)全套課件_第2頁(yè)
JavaWeb應(yīng)用開(kāi)發(fā)全套課件_第3頁(yè)
JavaWeb應(yīng)用開(kāi)發(fā)全套課件_第4頁(yè)
JavaWeb應(yīng)用開(kāi)發(fā)全套課件_第5頁(yè)
已閱讀5頁(yè),還剩287頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java Web應(yīng)用開(kāi)發(fā)學(xué)習(xí)目的: 基于Java語(yǔ)言學(xué)習(xí)Java Web相關(guān)技術(shù) 掌握B/S體系結(jié)構(gòu)的程序設(shè)計(jì)方法 具備動(dòng)態(tài)網(wǎng)站應(yīng)用程序的開(kāi)發(fā)能力課程內(nèi)容Web技術(shù)概述Java程序設(shè)計(jì)網(wǎng)頁(yè)基礎(chǔ)JSP頁(yè)面元素JSP內(nèi)置對(duì)象JDBC數(shù)據(jù)庫(kù)操作JavaBean技術(shù)EL表達(dá)式和JSTL標(biāo)簽庫(kù)Servlet技術(shù)Web設(shè)計(jì)模式Web 2.0和Ajax簡(jiǎn)介第1章 Web技術(shù)概述Web應(yīng)用演化:桌面應(yīng)用程序以前,普通PC桌面上有哪些應(yīng)用程序的圖標(biāo)?Windows Media Player等音樂(lè)播放器QQ等聊天工具網(wǎng)絡(luò)游戲客戶端Office等辦公軟件Web應(yīng)用演化:桌面應(yīng)用程序音樂(lè)播放器用戶選擇一個(gè) MP3 文

2、件音樂(lè)播放器播放 MP3 文件用戶音樂(lè)播放器的演化單機(jī)版:本地安裝播放器程序(Windows Media Player等),存儲(chǔ)音樂(lè)文件(mp3等)。Web應(yīng)用演化:桌面應(yīng)用程序音樂(lè)播放器用戶選擇一個(gè) MP3 文件音樂(lè)播放器播放 MP3 文件用戶音樂(lè)播放器的演化C/S網(wǎng)絡(luò)版:本地安裝播放器程序,音樂(lè)文件存儲(chǔ)在遠(yuǎn)程服務(wù)器上。遠(yuǎn)程服務(wù)器Web應(yīng)用演化:桌面應(yīng)用程序用戶本機(jī)音樂(lè)播放器請(qǐng)求 = 選擇要播放的文件用戶發(fā)送一個(gè)請(qǐng)求播放器發(fā)送一個(gè)響應(yīng)響應(yīng) = 音樂(lè)播放器播放選定的文件桌面應(yīng)用程序的特點(diǎn)音樂(lè)播放器的演化B/S網(wǎng)絡(luò)版:本地只需瀏覽器,應(yīng)用程序運(yùn)行在Web服務(wù)器,音樂(lè)文件也存儲(chǔ)在遠(yuǎn)程服務(wù)器上。We

3、b應(yīng)用演化:Web應(yīng)用程序Web服務(wù)器 播放一首歌作為響應(yīng)用戶請(qǐng)求播放一首歌Web應(yīng)用程序的特點(diǎn)Web應(yīng)用演化 C/S和B/S兩種體系結(jié)構(gòu)的特點(diǎn)和優(yōu)劣比較。C/S(Client/Server),客戶端/服務(wù)器結(jié)構(gòu),適用于中小型應(yīng)用程序,將任務(wù)合理分配到Client端和Server端來(lái)實(shí)現(xiàn)。系統(tǒng)的通訊開(kāi)銷(xiāo)低,應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕,系統(tǒng)升級(jí)或功能更新代價(jià)高、效率低。B/S(Browser/Server),瀏覽器/服務(wù)器結(jié)構(gòu),適用于大中型應(yīng)用程序,極少事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。簡(jiǎn)化客戶端電腦載荷,減輕系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低用戶

4、的總體成本,但應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較重。Web應(yīng)用演化:靜態(tài)WebHTTP請(qǐng)求HTTP響應(yīng)返回所請(qǐng)求的HTML頁(yè)面查找所請(qǐng)求的頁(yè)面靜態(tài)Web應(yīng)用程序的缺點(diǎn)Web應(yīng)用演化:動(dòng)態(tài)WebHTTP請(qǐng)求HTTP響應(yīng)返回動(dòng)態(tài)生成的HTML頁(yè)面生成響應(yīng)CGIPHPASPJSP調(diào)用程序靜態(tài)Web和動(dòng)態(tài)Web應(yīng)用程序的優(yōu)劣比較HTTP協(xié)議 超文本傳輸協(xié)議HyperText Transfer Protocol使用端口發(fā)送和接收消息,默認(rèn)為80端口HTTP 協(xié)議發(fā)送請(qǐng)求信息的方法GET 方法參數(shù)以字符串形式作為請(qǐng)求信息的一部分發(fā)送,明文傳輸發(fā)送的數(shù)據(jù)有大小限制,240-255個(gè)字符之間POST 方法用于發(fā)送敏感信

5、息,密文傳輸發(fā)送的數(shù)據(jù)沒(méi)有大小限制HTTP協(xié)議HTTP 消息包括:請(qǐng)求響應(yīng)請(qǐng)求消息請(qǐng)求行請(qǐng)求頭方法資源名稱(chēng)版本GET/POSTbar01.jpgHTTP/1.1瀏覽器類(lèi)型內(nèi)容類(lèi)型User-Agent: Mozilla/4.0 (compatible; MSIE 4.0: Windows 95 Accept: image/gif, image/jpeg, text/*, */*響應(yīng)消息 狀態(tài)行響應(yīng)頭版本狀態(tài)代碼說(shuō)明HTTP/1.1200OK服務(wù)器軟件修改日期大?。ㄗ止?jié))內(nèi)容類(lèi)型Server: JavaWebServerLast modified: Tuesday, 07-Sep-04 1:14:

6、34 GMTContent-length: 100Content-type: text/plainHTTP協(xié)議 HTTP協(xié)議具有無(wú)狀態(tài)的特點(diǎn)。獲取文件HTTP獲取圖像 /bar01.jpg HTTP/1.1HTTP/1.1 200 OK收到bar001.jpg 獲取文件HTTP獲取圖像 /bar02.jpg HTTP/1.1HTTP/1.1 200 OK收到bar002.jpg 再次需要獲取bar001.jpg時(shí),必須再次發(fā)起連接用戶登錄網(wǎng)站后,如何以合法身份繼續(xù)其他操作JSP概述JSP ( Java Server Pages )是基于Java語(yǔ)言的服務(wù)器端腳本技術(shù)。JSP頁(yè)面是在HTML靜態(tài)

7、內(nèi)容中加入動(dòng)態(tài)JSP元素。JSP是在服務(wù)器端應(yīng)用的一種腳本,它接受請(qǐng)求并生成響應(yīng)。JSP工作原理客戶端JSP 頁(yè)面(.jsp)3執(zhí)行2轉(zhuǎn)譯編譯1Servlet(.java)請(qǐng)求響應(yīng)JSP 執(zhí)行過(guò)程JSP頁(yè)面的生命周期JSP經(jīng)過(guò)轉(zhuǎn)譯、編譯成Servlet類(lèi)后,Servlet 容器創(chuàng)建 該類(lèi)的一個(gè)實(shí)例JSP 的生命周期就是指創(chuàng)建 Servlet 實(shí)例之后其存在的時(shí)間以及何時(shí)消失生命周期的 3個(gè)方法為:jspInit()jspService()jspDestroy()Web 應(yīng)用程序開(kāi)發(fā)過(guò)程設(shè)計(jì)目錄結(jié)構(gòu)編寫(xiě) Web 應(yīng)用程序代碼編寫(xiě)部署描述符編譯代碼將 Web 應(yīng)用程序打包部署 Web 應(yīng)用程序執(zhí)行

8、 Web 應(yīng)用程序Web 應(yīng)用程序目錄結(jié)構(gòu) Web 應(yīng)用程序HTML 文件圖像ServletJSP 頁(yè)面JavaBeanJar 文件標(biāo)簽文件標(biāo)簽庫(kù)描述符文件部署描述器.war 文件Web 應(yīng)用程序目錄結(jié)構(gòu)文檔根目錄Web 應(yīng)用程序目錄結(jié)構(gòu)index.html, login.jsp, contactus.jspViewBooks.jsp, logo.jpgbook1.jpgAddBook.class, DeleteBook.class mbase.jar, msqlserver.jar,msutil.jarDisplayBook.tag web.xml, books.tld 文檔根目錄靜態(tài)文件(

9、html, images)WEB-INF JSPclasseslibtag.tld, web.xml Web服務(wù)器配置JSP服務(wù)器配置環(huán)境JDK + TomcatTomcat可從/免費(fèi)下載。配置方法:新建環(huán)境變量JAVA_HOME:C:jdk1.6.0_01添加環(huán)境變量Path:%JAVA_HOME%binTomcat啟動(dòng)方法:雙擊Tomcat路徑下,bin目錄中的startup.bat文件第一個(gè)JSP程序MyFirstJSP%=out.println(“This is my first JSP page”);%JSP的優(yōu)點(diǎn)將內(nèi)容與表示分離請(qǐng)求響應(yīng)JSP 頁(yè)面靜態(tài)內(nèi)容動(dòng)態(tài)內(nèi)容客戶端服務(wù)器JSP

10、 程序員頁(yè)面設(shè)計(jì)人員JSP的優(yōu)點(diǎn)使用不同工具分工開(kāi)發(fā)JSP 頁(yè)面靜態(tài)內(nèi)容動(dòng)態(tài)內(nèi)容Web 開(kāi)發(fā)工具DreamweaverMyEclipseJBuilder 頁(yè)面設(shè)計(jì)人員 JSP 程序員JSP的優(yōu)點(diǎn)強(qiáng)調(diào)可重用組件JSP 頁(yè)面 1靜態(tài)內(nèi)容動(dòng)態(tài)內(nèi)容JSP 頁(yè)面 2靜態(tài)內(nèi)容動(dòng)態(tài)內(nèi)容JSP 頁(yè)面 3靜態(tài)內(nèi)容動(dòng)態(tài)內(nèi)容組件多個(gè) JSP 頁(yè)面使用相同的 組件Eclipse + MyEclipse開(kāi)發(fā)環(huán)境簡(jiǎn)介Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。 MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開(kāi)發(fā)環(huán)境 。創(chuàng)建Web 工程 開(kāi)發(fā)

11、過(guò)程創(chuàng)建 JSP部署Web模塊啟動(dòng)Web服務(wù)器調(diào)試運(yùn)行Eclipse平臺(tái)簡(jiǎn)介使用Eclipse+MyEclipse開(kāi)發(fā)JSP使用向?qū)?chuàng)建Web工程項(xiàng)目名稱(chēng)站點(diǎn)名稱(chēng)使用Eclipse+MyEclipse開(kāi)發(fā)JSP創(chuàng)建JSP“新建”|”JSP”JSP文件名使用Eclipse+MyEclipse開(kāi)發(fā)JSP創(chuàng)建JSP使用Eclipse+MyEclipse開(kāi)發(fā)JSP部署 Web 模塊使用Eclipse+MyEclipse開(kāi)發(fā)JSP啟動(dòng)Web 服務(wù)器使用Eclipse+MyEclipse開(kāi)發(fā)JSP運(yùn)行JSP總結(jié)C/S與B/S體系結(jié)構(gòu)的不同靜態(tài)Web與動(dòng)態(tài)Web的不同HTTP協(xié)議的兩種請(qǐng)求信息的方法HTTP

12、協(xié)議的特點(diǎn)JSP工作原理、生命周期、優(yōu)點(diǎn)Web 應(yīng)用程序開(kāi)發(fā)過(guò)程Web 服務(wù)器搭建與開(kāi)發(fā)環(huán)境配置MyEclipse的使用第2章 Java程序設(shè)計(jì)基礎(chǔ)回顧 Web應(yīng)用演化 HTTP協(xié)議 JSP工作原理、生命周期 Web 應(yīng)用程序開(kāi)發(fā)過(guò)程 Web 服務(wù)器搭建:JDK+Tomcat Web開(kāi)發(fā)環(huán)境的MyEclipse使用“抽象”的設(shè)計(jì)實(shí)例:開(kāi)發(fā)一個(gè)商品管理系統(tǒng)系統(tǒng)設(shè)計(jì)基本步驟:劃定系統(tǒng)邊界明確系統(tǒng)功能抽象系統(tǒng)范圍內(nèi)的實(shí)體實(shí)例設(shè)計(jì):具有權(quán)限的管理員對(duì)商品進(jìn)行管理。功能包括對(duì)商品的增加、刪除、修改、查詢等,以及用戶權(quán)限管理。商品,用戶。抽象實(shí)體類(lèi)系統(tǒng)設(shè)計(jì)一般分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)重點(diǎn)完成的抽象

13、活動(dòng),首先是將現(xiàn)實(shí)事物轉(zhuǎn)化為計(jì)算機(jī)語(yǔ)言所能表達(dá)的形式,即將系統(tǒng)范圍內(nèi)的實(shí)體事物抽象為實(shí)體類(lèi)。實(shí)例:設(shè)計(jì)商品管理系統(tǒng)的實(shí)體類(lèi)(重點(diǎn)描述屬性)。Goods類(lèi)User類(lèi)一般重寫(xiě)繼承自O(shè)bject類(lèi)的toString()方法。集合類(lèi)的使用集合類(lèi)對(duì)象描述一些對(duì)象的集合。數(shù)據(jù)庫(kù)里使用表來(lái)描述一些記錄的集合,Java里使用集合類(lèi)對(duì)象來(lái)描述一些對(duì)象的集合。JDK 5.0之后注意泛型的使用。使用for循環(huán)或增強(qiáng)的for循環(huán)對(duì)集合進(jìn)行遍歷。封裝業(yè)務(wù)功能系統(tǒng)業(yè)務(wù)功能,一般圍繞上述實(shí)體發(fā)生,可根據(jù)不同實(shí)體設(shè)計(jì)不同業(yè)務(wù)接口。接口封裝了不同實(shí)體的各種行為(方法),設(shè)計(jì)接口其實(shí)是將現(xiàn)實(shí)活動(dòng)轉(zhuǎn)化為計(jì)算機(jī)語(yǔ)言所能表達(dá)的形式,此

14、時(shí)只是高度抽象,并未具體實(shí)現(xiàn)。實(shí)例:設(shè)計(jì)商品管理系統(tǒng)的數(shù)據(jù)訪問(wèn)功能接口。IGoodsDAO商品數(shù)據(jù)訪問(wèn)接口IUserDAO用戶數(shù)據(jù)訪問(wèn)接口DAO(Data Access Object),數(shù)據(jù)訪問(wèn)接口,用于封裝對(duì)數(shù)據(jù)的操作行為。基于多態(tài)機(jī)制實(shí)現(xiàn)接口接口設(shè)計(jì)的作用確定系統(tǒng)功能實(shí)現(xiàn)分工開(kāi)發(fā)增強(qiáng)系統(tǒng)可擴(kuò)展性實(shí)例:使用接口編寫(xiě)測(cè)試類(lèi),同時(shí)實(shí)現(xiàn)接口。GoodsDAOImpl商品數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)類(lèi)UserDAOImpl用戶數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)類(lèi)項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)項(xiàng)目概述系統(tǒng)設(shè)計(jì)需求分析總體設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)項(xiàng)目概述 BBS論壇,是電子商務(wù)網(wǎng)站中一種常見(jiàn)的功能,它為上網(wǎng)用戶提供了一個(gè)自由的討

15、論區(qū)。用戶可以根據(jù)需要在論壇上發(fā)表文章,提出問(wèn)題并表達(dá)自己的觀點(diǎn),俗稱(chēng)為發(fā)帖子、或者“灌水”。與此同時(shí),上網(wǎng)的用戶也可以在論壇中看到其他人發(fā)表的文章,并能夠?qū)υ撐恼逻M(jìn)行回復(fù)。項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)系統(tǒng)設(shè)計(jì)需求分析項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)系統(tǒng)設(shè)計(jì)總體設(shè)計(jì)業(yè)務(wù)流程分析項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)系統(tǒng)設(shè)計(jì)總體設(shè)計(jì)功能模塊設(shè)計(jì)會(huì)員注冊(cè)會(huì)員登錄版塊查閱文章查閱發(fā)表新文章回復(fù)文章項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)概念設(shè)計(jì)(略):ER圖邏輯設(shè)計(jì)項(xiàng)目案例網(wǎng)上論壇BBS系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)概念設(shè)計(jì)(略):ER圖邏輯設(shè)計(jì)物理設(shè)計(jì)項(xiàng)目設(shè)計(jì)開(kāi)發(fā)思路實(shí)體類(lèi)設(shè)計(jì)User類(lèi)、Board類(lèi)、Topic類(lèi)、Reply類(lèi)數(shù)據(jù)訪問(wèn)

16、接口設(shè)計(jì)UserDao接口、BoardDao接口、TopicDao接口、ReplyDao接口實(shí)現(xiàn)接口UserDaoImpl實(shí)現(xiàn)類(lèi)、BoardDaoImpl實(shí)現(xiàn)類(lèi)、TopicDaoImpl實(shí)現(xiàn)類(lèi)、ReplyDaoImpl實(shí)現(xiàn)類(lèi)總結(jié)抽象是將現(xiàn)實(shí)世界轉(zhuǎn)化為計(jì)算機(jī)語(yǔ)言的過(guò)程。使用封裝、繼承、多態(tài)特點(diǎn)完成系統(tǒng)的概要設(shè)計(jì)。對(duì)數(shù)據(jù)的操作經(jīng)常會(huì)用到集合類(lèi)。第3章 網(wǎng)頁(yè)基礎(chǔ)目標(biāo)HTML文檔的基本結(jié)構(gòu)文字格式標(biāo)記表單的使用表格布局項(xiàng)目符號(hào)列表CSS基礎(chǔ)DIV+CSS布局JavaScript表單驗(yàn)證HTML文檔的基本結(jié)構(gòu)HTML文檔是一種純文本格式的文件,基本結(jié)構(gòu)為: 網(wǎng)頁(yè)的標(biāo)題 網(wǎng)頁(yè)的內(nèi)容 文字格式標(biāo)記標(biāo)記設(shè)置文

17、字不同的大小、字體、字型、色彩。設(shè)置文字大小的格式為: 被設(shè)置的文字 超鏈接鏈接到同一目錄內(nèi)的網(wǎng)頁(yè)文件 熱點(diǎn)文本 鏈接到下一級(jí)目錄中的網(wǎng)頁(yè)文件 熱點(diǎn)文本 鏈接到上一級(jí)目錄中的網(wǎng)頁(yè)文件 熱點(diǎn)文本 鏈接到根目錄中的網(wǎng)頁(yè)文件 熱點(diǎn)文本 表格表格的標(biāo)記為,行的標(biāo)記為,表項(xiàng)的標(biāo)記為。格式為: 表頭1 表頭2 表項(xiàng)1 表項(xiàng)2 表項(xiàng)1 表項(xiàng)2 表格應(yīng)用【】表單在網(wǎng)頁(yè)中,通過(guò)表單交流和反饋信息。格式為: action 屬性規(guī)定當(dāng)提交表單時(shí),向何處發(fā)送表單數(shù)據(jù)。method 屬性規(guī)定以什么方法發(fā)送表單數(shù)據(jù)。表單表單示例: 用戶名: 密 碼: 下拉列表框 多行文本框劉德華張學(xué)友郭富城黎明編輯框默認(rèn)顯示的內(nèi)容 表單

18、標(biāo)記常用屬性如下:屬性type可設(shè)置選擇鈕的類(lèi)型屬性value可設(shè)置該選擇鈕的控制初值,用以告訴表單制作者選擇結(jié)果屬性checked表示是否為缺省選中項(xiàng)屬性name屬性是控制名,同一組的選擇鈕的控制名是一樣的。 表格與表單的結(jié)合應(yīng)用【】表格布局表格表格布局表格布局是傳統(tǒng)的布局方式。中心思想:設(shè)計(jì)網(wǎng)頁(yè)第一步首先就是進(jìn)行頁(yè)面布局,而不是填寫(xiě)內(nèi)容。主要思路是:縱向:表格的堆砌橫向:表格的嵌套 項(xiàng)目符號(hào)列表標(biāo)記和表項(xiàng)標(biāo)記建立無(wú)序列表。格式為: 第一個(gè)列表項(xiàng) 第二個(gè)列表項(xiàng) 層疊樣式表CSS簡(jiǎn)介CSS(Cascading Style Sheet,“層疊樣式表”或“級(jí)聯(lián)樣式表”)是一組格式設(shè)置規(guī)則,用于控制

19、Web頁(yè)面的外觀。內(nèi)嵌樣式內(nèi)部樣式表外部樣式表CSS的應(yīng)用DIV+CSS布局DIV層DIV+CSS布局DIV+CSS布局是目前流行的布局方式。主要思路:設(shè)計(jì)網(wǎng)頁(yè)第一步首先就是進(jìn)行頁(yè)面抽象,將網(wǎng)頁(yè)內(nèi)容歸類(lèi)劃分為不同的DIV層:DIV層也可以發(fā)生嵌套,這種嵌套可以理解為父層與子層的繼承關(guān)系,父層的CSS樣式會(huì)作用于子層:JavaScriptJavaScript function check() if(1.value=) alert(請(qǐng)輸入姓名); return false; return true; 第4章 JSP的頁(yè)面元素第一個(gè)JSP程序第一個(gè)JSP程序第一個(gè)JSP程序 第一個(gè)JSP程序JSP頁(yè)

20、面元素 -1靜態(tài)內(nèi)容指 令表達(dá)式腳本代碼JSP 頁(yè)面HTML靜態(tài)文本以“ ” 結(jié)束。如:聲 明動(dòng)作.如:注釋JSP 頁(yè)面元素 -2聲明腳本代碼指令JSP 頁(yè)面構(gòu)成 JSP頁(yè)面構(gòu)成早上好!下午好!靜態(tài)內(nèi)容表達(dá)式注釋動(dòng)作元素腳本代碼注釋JSP注釋方式:Java注釋方式:指令元素指令元素表現(xiàn)形式如下: JSP指令元素主要有三種類(lèi)型的指令:includepagetaglibPage指令page 指令用于設(shè)置 JSP 頁(yè)面的屬性page 指令屬性languageimportbuffererrorPageisErrorPagePage指令errorPage示例字符串str的長(zhǎng)度為錯(cuò)誤處理頁(yè)面錯(cuò)誤信息Inc

21、lude指令作用:在JSP網(wǎng)頁(yè)中插入其他文件。方法一:方法二:動(dòng)作% for(int i = 1; i font size=“”Hello JSPInclude指令示例腳本元素JSP 腳本元素包括:JSP 腳本元素表達(dá)式腳本代碼聲明聲明%!public int fact(int j) int result = 1;for(int i = 1; i 表達(dá)式 JSP表達(dá)式 PI 的值: 100,99中最大的值 : 100,99中最小的值 : 3+2-5的值 : (3+2)=5的值 : (3+2)!=5的值 :表達(dá)式腳本代碼 以直角三角形的形式顯示數(shù)字 % for(int i=1;i10;i+) f

22、or(int j=1;j=i;j+) out.println(j); out.println(); %腳本代碼scriptlet%int a=10;int b=20;out.println(a = +a+);out.println(b = +b+);out.println(a + b = + (a+b) +);out.println(a - b = + (a-b) +);out.println(a * b = + (a*b) +);out.println(b / a = + (b/a) +);%腳本代碼% for(int i = 0; i % for(int j = 0; j 腳本代碼體會(huì)下列

23、兩條語(yǔ)句的不同聲明成員變量與腳本代碼變量的區(qū)別綜合實(shí)例使用JSP聲明和Scriptlet及表達(dá)式的聯(lián)合使用將整數(shù)金額自動(dòng)轉(zhuǎn)化為兩位小數(shù)的金額 轉(zhuǎn)化前的金額轉(zhuǎn)化后的金額 第5章 JSP內(nèi)置對(duì)象回顧JSP 腳本元素包括:表達(dá)式、腳本代碼 和聲明JSP 表達(dá)式包括在 標(biāo)簽內(nèi), JSP腳本代碼包括在內(nèi), JSP聲明包括在內(nèi)JSP 指令有 page、include 和 taglib指令,JSP 指令包括在 標(biāo)簽內(nèi)page 指令用于設(shè)置 JSP 頁(yè)面的屬性回顧 以直角三角形的形式顯示數(shù)字 % for(int i=1;i10;i+) for(int j=1;j=i;j+) out.println(j); o

24、ut.println(); %例題: % for(int i=1;i10;i+) for(int j=1;j 本章目標(biāo)了解內(nèi)置對(duì)象的分類(lèi)及組成運(yùn)用輸入輸出對(duì)象:request、response 和 out運(yùn)用作用域通信對(duì)象:session、application和pageContext理解 Servlet 相關(guān)對(duì)象:page 和 config理解錯(cuò)誤對(duì)象:exception內(nèi)置對(duì)象介紹在JSP中,因?yàn)閷?duì)某些對(duì)象已經(jīng)做了聲明,不像一般Java對(duì)象那樣用”new”去獲取實(shí)例,而是可以直接在JSP頁(yè)面使用的對(duì)象。這些對(duì)象是在JSP頁(yè)面初始化時(shí)生成的。稱(chēng)這些對(duì)象為內(nèi)置對(duì)象或者隱含對(duì)象(Implicit

25、 Object)。內(nèi)置對(duì)象介紹JSP 頁(yè)面內(nèi)置對(duì)象客戶端響應(yīng)請(qǐng)求 響應(yīng)請(qǐng)求服務(wù)器內(nèi)置對(duì)象介紹簡(jiǎn)單示例 內(nèi)置對(duì)象分類(lèi)內(nèi)置對(duì)象輸入輸出對(duì)象作用域通信對(duì)象Servlet 對(duì)象錯(cuò)誤對(duì)象requestresponseoutsessionpageContextapplicationpageconfigexceptionrequest對(duì)象表示客戶端對(duì)網(wǎng)頁(yè)的請(qǐng)求使用 HTTP 協(xié)議處理客戶端的請(qǐng)求JSP 頁(yè)面request 對(duì)象客戶端請(qǐng)求信息表示并存儲(chǔ)客戶端的請(qǐng)求請(qǐng)求服務(wù)器request對(duì)象request對(duì)象常用方法String getParameter(String name) 根據(jù)頁(yè)面表單組件名稱(chēng)獲取請(qǐng)求

26、頁(yè)面提交數(shù)據(jù)String getParameterValues (String name) 獲取頁(yè)面請(qǐng)求中一個(gè)表單組件對(duì)應(yīng)多個(gè)值時(shí)的用戶的請(qǐng)求數(shù)據(jù)request對(duì)象100request對(duì)象request對(duì)象request對(duì)象 大風(fēng)車(chē) 最喜愛(ài)的節(jié)目是:%for(int i = 0; i ; request對(duì)象客戶端向服務(wù)器發(fā)送數(shù)據(jù)時(shí),有Get和Post方法:Post方法,如:提交formGet方法,如:/s?wd=jsprequest對(duì)象request對(duì)象的其他方法獲取系統(tǒng)信息獲取請(qǐng)求行信息獲取請(qǐng)求標(biāo)頭信息管理請(qǐng)求作用域內(nèi)的屬性request.setAttribute(String name,

27、Object object)request.getAttribute(String name)request.removeAttribute(String name)response對(duì)象response對(duì)象和request對(duì)象的性質(zhì)相反,它代表的是對(duì)客戶端的響應(yīng),也就是說(shuō)可以通過(guò)response對(duì)象來(lái)組織發(fā)送到客戶端的數(shù)據(jù)。JSP 頁(yè)面response 對(duì)象客戶端從服務(wù)器中檢索的信息 存儲(chǔ)信息,以在響應(yīng)客戶端請(qǐng)求時(shí)發(fā)送此信息響應(yīng)服務(wù)器response對(duì)象設(shè)置響應(yīng)報(bào)頭setHeader方法 setContentType方法 response重定向sendRedirect方法response對(duì)象r

28、esponse重定向response.sendRedirect(“目標(biāo).jsp”);轉(zhuǎn)向request.getRequestDispatcher(“目標(biāo).jsp).forward(request,response);思考:什么時(shí)候request對(duì)象失效?108out對(duì)象out是向客戶端的輸出流進(jìn)行寫(xiě)操作的對(duì)象。在JSP頁(yè)面中可以用out對(duì)象把除腳本以外的所有信息發(fā)送到客戶端的瀏覽器。使用 print() 和 println() 方法JSP 頁(yè)面out 對(duì)象客戶端創(chuàng)建輸出流創(chuàng)建輸出流以顯示信息 請(qǐng)求輸出流在網(wǎng)頁(yè)上顯示輸出流服務(wù)器session對(duì)象Web 服務(wù)器為單個(gè)用戶發(fā)送的多個(gè)請(qǐng)求創(chuàng)建會(huì)話存儲(chǔ)

29、有關(guān)用戶會(huì)話的所有信息session 對(duì)象最常用的方法有:void setAttribute(String name,Object value) 以鍵/值的方式,將一個(gè)對(duì)象的值存放到session 中 Object getAttribute(String name)根據(jù)名稱(chēng)去獲取session中存放對(duì)象的值session對(duì)象 application對(duì)象應(yīng)用程序的 JSP 頁(yè)面組合起來(lái)形成一個(gè)應(yīng)用程序所有JSP頁(yè)面,所有客戶端都共享application對(duì)象application對(duì)象最常用的方法有:void setAttribute(String name,Object value) 以鍵/值的

30、方式,將一個(gè)對(duì)象的值存放到application中Object getAttribute(String name) 根據(jù)名稱(chēng)去獲取application中存放對(duì)象的值application對(duì)象 其他內(nèi)置對(duì)象pageContext對(duì)象管理頁(yè)面作用域中的屬性pageContext對(duì)象最常用的方法有:void setAttribute(String name,Object value) 以鍵/值的方式,將一個(gè)對(duì)象的值存放到pageContext中Object getAttribute(String name) 根據(jù)名稱(chēng)去獲取pageContext中存放對(duì)象的值 示例購(gòu)物車(chē)login.jsp 登錄 用

31、戶名 密碼 chklogin.jsp 登錄檢驗(yàn)error.jsp 登錄失敗 用戶名或密碼不正確!請(qǐng)重新登錄show.jsp(1) 顯示所有書(shū)籍show.jsp(2) 顯示所有書(shū)籍 序號(hào)書(shū)名 %for (int i = 0; i a href=detail.jsp?bookId= detail.jsp(1)顯示某書(shū)詳細(xì)信息%int bookId = Integer.parseInt(request.getParameter(bookId);ArrayList bookList = (ArrayList)session.getAttribute(bookList);String bookName

32、= ;for (int i = 0; i detail.jsp(2)顯示某書(shū)詳細(xì)信息的詳細(xì)信息 input type=hidden value=“ name=bookIdBuy / input type=hidden value=“ name=bookNameBuy / 繼續(xù)選購(gòu) buy.jsp 將選購(gòu)書(shū)籍放入集合中已放入購(gòu)物車(chē)結(jié)帳付款繼續(xù)選購(gòu)checkout.jsp(1)顯示選購(gòu)書(shū)籍并結(jié)帳 選購(gòu)書(shū)名 %for (int i = 0; i checkout.jsp(2)顯示選購(gòu)書(shū)籍并結(jié)帳 銀行帳號(hào): 帳號(hào)密碼: ending.jsp & invalidate.jsp安全離開(kāi)已安全離開(kāi)示例分頁(yè)/

33、index.jsp%String curPage = request.getParameter(page); int start = (Integer.parseInt(curPage) - 1) * 5; for(int i = start; i start + 5; i+) out.println( + data.get(i) + ); % 上一頁(yè) a href=tunePage.jsp?curPage=&action=previous上一頁(yè) 分頁(yè)/續(xù)上index.jsp 下一頁(yè) a href=tunePage.jsp?curPage=&action=next下一頁(yè) 分頁(yè)/tunePage

34、.jspCookieCookie類(lèi)提供了3個(gè)方法從客戶端獲取存儲(chǔ)在計(jì)算機(jī)上的cookie信息:request.getCookies();cookieName.getName();cookieName.getValue();config對(duì)象config對(duì)象jspconfig/jspconfig.jspLocalHostMyServerjspconfig/jspconfig.jsp第6章 JDBC目標(biāo)了解JDBC體系結(jié)構(gòu)通過(guò)JDBC-ODBC橋驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)檢索和瀏覽數(shù)據(jù)庫(kù)中的數(shù)據(jù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的更新使用預(yù)編譯語(yǔ)句操作數(shù)據(jù)庫(kù)JDBC簡(jiǎn)介JDBC (Java DataBase Connectivit

35、y)是Java數(shù)據(jù)庫(kù)連接的簡(jiǎn)稱(chēng);由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成,位于java.sql包中;提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口(API)。JDBC簡(jiǎn)介 Java 程序 JDBC 驅(qū)動(dòng)程序數(shù)據(jù)庫(kù)SQL 命令 結(jié)果 SQL包接口名 說(shuō)明 DriverManager此類(lèi)用于加載和卸載各種驅(qū)動(dòng)程序并建立與數(shù)據(jù)庫(kù)的連接Connection此接口表示與數(shù)據(jù)的連接Statement此接口用于執(zhí)行 SQL 語(yǔ)句并將數(shù)據(jù)檢索到 ResultSet 中 PreparedStatement此接口用于執(zhí)行預(yù)編譯的 SQL 語(yǔ)句 ResultSet此接口表示了查詢出來(lái)的數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)果集SQL包開(kāi) 始 導(dǎo)入 java

36、.sql包 加載并注冊(cè)驅(qū)動(dòng)程序 創(chuàng)建 Connection 對(duì)象 創(chuàng)建PreparedStatement 對(duì)象 執(zhí)行語(yǔ)句 關(guān)閉ResultSet 對(duì)象 關(guān)閉Statement對(duì)象 關(guān)閉連接 結(jié)束 使用ResultSet對(duì)象 Import java.sql.*;Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Connection con = DriverManager.getConnection(“jdbc:odbc:數(shù)據(jù)源”);PreparedStatement psmt = con.prepareStatement(sql);ResultSet r

37、s = psmt.executeQuery( );int num = psmt.executeUpdate( );rs.close(); psmt.close(); con.close();連接數(shù)據(jù)庫(kù)在SQL Server中創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表“管理工具”-”數(shù)據(jù)源(ODBC)”,配置數(shù)據(jù)源 import java.sql.*; Connection conn = null; try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);String url = “jdbc:odbc:study”; conn = DriverManager.getConne

38、ction(url, “sa”, “sa”);System.out.println(數(shù)據(jù)庫(kù)連接成功); catch(SQLException ex1) ex1.printStackTrace(); finally try if(conn != null) conn.close(); catch(SQLException ex2) ex2.printStackTrace(); com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver:/localhost:1433;DataBaseName=bbs 檢索數(shù)據(jù)庫(kù)(1)s

39、elect 員工編號(hào)員工姓名員工職務(wù) 所屬部門(mén)基本工資 檢索數(shù)據(jù)庫(kù)(2)讀取字段名ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumn = rsmd.getColumnCount(); %for (int i = 1; i = cols; i+) out.print(“ + rsmd.getColumnLabel(i) + “”); % %for(int i = 1; i 檢索數(shù)據(jù)庫(kù)(3)可滾動(dòng)的數(shù)據(jù)集 % stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

40、 ResultSet.CONCUR_READ_ONLY); String sql = select * from 員工檔案; rs = stmt.executeQuery(sql); if (request.getParameter(row) != null) String row = request.getParameter(row); if (row.equals(first) ) rs.first(); else if (row.equals(last) rs.last();else if (Integer.parseInt(row) 首記錄a href=ScrollQuery.jsp?

41、row=上一條a href=ScrollQuery.jsp?row=下一條尾記錄更新數(shù)據(jù)庫(kù) executeUpdate() Connection conn = null; PreparedStatement psmt = null; ResultSet rs = null; try conn = DriverManager.getConnection(url, user, password); String sql = insert into 員工檔案 values(?,?,?,?,?); psmt = conn.prepareStatement(sql); psmt.setString(1,

42、 “11”); psmt.setString(2, “jake”); psmt.setString(3, “manager”); psmt.setString(4, “研發(fā)部”); psmt.setString(5, “2000”); int num = psmt.executeUpdate(); 使用事務(wù)在數(shù)據(jù)庫(kù)系統(tǒng)中,可以把一系列對(duì)數(shù)據(jù)源的操作作為一個(gè)整體來(lái)對(duì)待,這個(gè)整體稱(chēng)為一次事務(wù)。事務(wù)開(kāi)始后,如果事務(wù)中的所有操作都能正確執(zhí)行,則將這些操作全部施加到數(shù)據(jù)庫(kù)上;否則,就取消所有的操作,這時(shí),數(shù)據(jù)庫(kù)中的數(shù)據(jù)和執(zhí)行事務(wù)前的數(shù)據(jù)是一樣的。使用事務(wù)conn = DriverManager.getC

43、onnection(url, user, password);conn.setAutoCommit(false);/關(guān)閉自動(dòng)提交模式String sql = insert into 員工檔案 values(?,?,?,?,?);psmt=conn.prepareStatement(sql);psmt.setString(1,20);psmt.setString(2,段金鎖);psmt.setString(3,經(jīng)理助理);psmt.setString(4,研發(fā)部);psmt.setString(5,2000);psmt.executeUpdate();psmt=conn.prepareState

44、ment( update 員工檔案 set 基本工資=3800 where 員工姓名=jake);psmt.executeUpdate();mit();/正常則提交事務(wù),出現(xiàn)異常則回滾conn.rollback()conn.setAutoCommit(true); 思考在查詢或更新數(shù)據(jù)庫(kù)的每一次操作中,都要在連接和關(guān)閉數(shù)據(jù)庫(kù)的語(yǔ)句中重復(fù)部分代碼,合適嗎?import java.sql.*;try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url = “jdbc:odbc:study”; Connection conn = Dri

45、verManager.getConnection(url, “sa”, “sa”); catch(ClassNotFoundException ex1) System.out.println(ex1.getMessage); catch(SQLException ex2) System.out.println(ex2.getMessage); finally try if(conn != null) conn.close(); catch(SQLException ex) out.println(ex.getMessage); 數(shù)據(jù)庫(kù)連接重用 JSP頁(yè)面1底層類(lèi)(可重用)JSP頁(yè)面2BaseD

46、ao 數(shù)據(jù)訪問(wèn)層工具類(lèi)/BaseDao.java類(lèi)封裝了數(shù)據(jù)庫(kù)的連接和關(guān)閉操作package dao.impl;import java.sql.*;public class BaseDao private static final String DRIVER_CLASS =com.microsoft.jdbc.sqlserver.SQLServerDriver; private static final String DATABASE_URL = jdbc:microsoft:sqlserver:/localhost:1433; + DataBaseName=bbs; private stat

47、ic final String DATABASE_USRE = sa; private static final String DATABASE_PASSWORD = sa; BaseDao 數(shù)據(jù)訪問(wèn)層工具類(lèi)/返回Connection對(duì)象 public static Connection getConnection() Connection conn = null; try Class.forName(DRIVER_CLASS); conn = DriverManager.getConnection(DATABASE_URL, DATABASE_USRE, DATABASE_PASSWORD)

48、; catch (ClassNotFoundException ex) System.out.println(ex.getMessage(); catch (SQLException ex) System.out.println(ex.getMessage(); return conn; BaseDao 數(shù)據(jù)訪問(wèn)層工具類(lèi)public static void closeConnection(Connection conn) try if (conn != null) conn.close(); catch (SQLException ex) System.out.println(ex.getMe

49、ssage(); public static void closePreparedStatement(PreparedStatement psmt) try if (psmt != null) psmt.close(); catch (SQLException ex) System.out.println(ex.getMessage(); public static void closeResultSet(ResultSet rs) try if (rs != null) rs.close(); catch (SQLException ex) System.out.println(ex.get

50、Message(); 利用BaseDao類(lèi)連接數(shù)據(jù)庫(kù) JSP頁(yè)面1調(diào)用 結(jié)果 底層類(lèi)(可重用)JSP頁(yè)面2利用BaseDao類(lèi)連接數(shù)據(jù)庫(kù) 員工編號(hào) 員工姓名 員工職務(wù) 所屬部門(mén) 基本工資 項(xiàng)目中BaseDao類(lèi)的設(shè)計(jì)public int executeSQL(String preparedSql, String param) Connection conn = null;PreparedStatement pstmt = null;int num = 0;try conn = getConnection(); pstmt = conn.prepareStatement(preparedSql)

51、; if (param != null) for (int i = 0; i param.length; i+) pstmt.setString(i + 1, parami); num = pstmt.executeUpdate(); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); finally closeAll(conn, pstmt, null); return num;/ UserDaoImplpublic int addUser(User

52、 user) String sql = insert into TBL_USER “ + (uname,upass,gender,head,regTime) “ + “ values(?,?,?,?,?); String param = user.getUName(), user.getUPass(), user.getGender(),user.getHead(),new Date(); return this.executeSQL(sql, param); 企業(yè)級(jí)開(kāi)發(fā)對(duì)Dao層的要求 企業(yè)級(jí)開(kāi)發(fā)需要穩(wěn)健和高效的數(shù)據(jù)訪問(wèn)層完成對(duì)數(shù)據(jù)庫(kù)的增刪改查操作能夠處理數(shù)據(jù)庫(kù)發(fā)生的各種錯(cuò)誤可以靈活的修改配

53、置提供方便使用的工具高性能數(shù) 據(jù) 庫(kù)請(qǐng)求響應(yīng)操作結(jié)果要求高效、穩(wěn)健的數(shù)據(jù)訪問(wèn)層打開(kāi)連接,操作數(shù)據(jù)庫(kù),關(guān)閉連接多次重復(fù)操作數(shù)據(jù)庫(kù)連接池普通電話 建立連接,等待回應(yīng)熱線電話 已建立連接連接已連接開(kāi)始通話開(kāi)始通話已連接,直接通話連接中流程框架圖標(biāo)使用規(guī)范 連接池中的連接數(shù) 據(jù) 庫(kù)想要獲得連接返回一個(gè)連接返回一個(gè)已連接好的空閑連接應(yīng)用程序從連接池中獲得連接連接池是由容器提供的,用來(lái)管理池中連接對(duì)象應(yīng)用程序連接池Connection1Connection2Connection3數(shù)據(jù)源簡(jiǎn)介 數(shù)據(jù)源(DataSource)javax.sql.DataSource接口負(fù)責(zé)建立與數(shù)據(jù)庫(kù)的連接從Tomcat的數(shù)據(jù)

54、源獲得連接把連接保存在連接池中應(yīng)用程序Connection1Connection2Connection3數(shù) 據(jù) 庫(kù)想要獲得連接返回一個(gè)連接連接池連接池中的連接對(duì)象是由誰(shuí)創(chuàng)建的呢?JNDI介紹 如何獲得DataSource對(duì)象數(shù)據(jù)源由Tomcat提供,不能在程序中創(chuàng)建實(shí)例使用JNDI獲得DataSource引用什么是JNDIJNDI(Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應(yīng)用中訪問(wèn)命名和目錄服務(wù)的APIjavax.namming.Context接口的lookup()方法應(yīng)用程序jdbc/d1jdbc/d2數(shù)據(jù)源數(shù)據(jù)源名稱(chēng)C

55、onnectioncontext.lookup( jdbc/d1 )使用JNDI獲取連接對(duì)象 import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;public class BaseDao public static Connection getConnection() try Context ic = new InitialContext(); DataSource source = (Data

56、Source)ic.lookup(java:comp/env/jdbc/bbs); Connection conn = source.getConnection(); return conn; catch (SQLException e1) e1.printStackTrace(); catch (NamingException e2) e2.printStackTrace(); return null; 使用JNDI和數(shù)據(jù)源要導(dǎo)入的包通過(guò)Context、DataSource獲取Connection對(duì)象分為兩部分java:comp/env為JavaEE默認(rèn)路徑j(luò)dbc/bbs為DataSour

57、ce名JNDI的配置name指定Resource的JNDI名稱(chēng)auth指定管理Resource的Manager(Container:由容器創(chuàng)建和管理|Application:由Web應(yīng)用創(chuàng)建和管理)type指定Resource所屬的Java類(lèi)maxActive指定連接池中處于活動(dòng)狀態(tài)的數(shù)據(jù)庫(kù)連接的最大數(shù)目maxIdle指定連接池中處于空閑狀態(tài)的數(shù)據(jù)庫(kù)連接的最大數(shù)目maxWait指定連接池中的連接處于空閑的最長(zhǎng)時(shí)間,超過(guò)這個(gè)時(shí)間會(huì)拋出異常,取值為-1,表示可以無(wú)限期等待 Tomcat的conf/context.xml中的配置 JNDI的配置 加入數(shù)據(jù)庫(kù)驅(qū)動(dòng)文件把數(shù)據(jù)庫(kù)驅(qū)動(dòng)的.jar文件,加入到T

58、omcat的commonlib中應(yīng)用程序的web.xml文件的配置在web.xml中配置 jdbc/bbs javax.sql.DataSource Container 指定JNDI的名字,與元素中的name一致指定引用資源的類(lèi)名,與元素中的type一致指定管理所引用資源的管理者與元素中的auth一致總結(jié)使用JDBC技術(shù)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層(Dao) UserDaoImpl BoardDaoImplBaseDao TopicDaoImpl ReplyDaoImpl第7章 JavaBean在JSP中的應(yīng)用什么是面向?qū)ο??三大面向?qū)ο筇匦裕悍庋b、繼承和多態(tài)類(lèi)是對(duì)相似事物的抽象。類(lèi)的本質(zhì)作用:可重用 Ba

59、seDao類(lèi)BaseDao類(lèi)對(duì)數(shù)據(jù)庫(kù)操作行為的抽象public class BaseDao private static final String DRIVER_CLASS = “.; private static final String DATABASE_URL = .; private static final String DATABASE_USRE = .; private static final String DATABASE_PASSWORD = .; public static Connection getConnection() public static void clo

60、seConnection(Connection conn) public static void closePreparedStatement(PreparedStatement psmt) public static void closeResultSet(ResultSet rs) JavaBean思想小孩的積木 面向?qū)ο蟮木幊掏ǔR灶?lèi)的實(shí)例化對(duì)象為基礎(chǔ)進(jìn)行驅(qū)動(dòng)的。使用JavaBean將面向?qū)ο缶幊碳夹g(shù)引入到JSP腳本中。積木塊組裝成品JavaBean組件組件間協(xié)作應(yīng)用程序“用戶登錄” 體會(huì)抽象問(wèn)題1:有什么實(shí)體?問(wèn)題3:該實(shí)體應(yīng)具有什么功能?答1:“用戶”實(shí)體答3:“用戶”具有“判斷是否

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論