《JavaWeb實(shí)訓(xùn)》PPT課件.ppt
《《JavaWeb實(shí)訓(xùn)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《JavaWeb實(shí)訓(xùn)》PPT課件.ppt(237頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
JavaWeb項(xiàng)目實(shí)訓(xùn) 2011 12 HTMLJSPServletJavaBeanJDBCMySQL TrainingofJavaWebProject 2 1 課程介紹 3 1 課程介紹 課程的性質(zhì)和目標(biāo)本實(shí)訓(xùn)課程是在學(xué)生具備了Java程序設(shè)計(jì)知識(shí)與面向?qū)ο蠹夹g(shù)的基礎(chǔ)上 為進(jìn)一步提高項(xiàng)目實(shí)踐能力 開拓創(chuàng)新能力而設(shè)置的實(shí)踐性環(huán)節(jié)課程 本課程的目的掌握使用JSP應(yīng)用程序設(shè)計(jì)的基本技能 熟練使用Eclipse進(jìn)行Web應(yīng)用程序的編寫 調(diào)試 結(jié)合案例詳細(xì)說(shuō)明JavaWeb軟件項(xiàng)目的整個(gè)開發(fā)過(guò)程 在項(xiàng)目開發(fā)過(guò)程中逐步熟悉知識(shí)點(diǎn) 掌握J(rèn)avaB S結(jié)構(gòu)程序的運(yùn)行原理和應(yīng)用技能 最后完成一個(gè)完整的軟件開發(fā)項(xiàng)目 先修課程 Java語(yǔ)言程序設(shè)計(jì) 計(jì)算機(jī)網(wǎng)絡(luò) 數(shù)據(jù)庫(kù)原理 4 1 課程介紹 課程的基本要求掌握J(rèn)ava集成開發(fā)環(huán)境 IDE Eclipse的使用和調(diào)試方法利用JSP Servlet JavaBean實(shí)現(xiàn)Web應(yīng)用開發(fā)掌握分層體系結(jié)構(gòu)開發(fā)的技巧完成教師指定的開發(fā)任務(wù) 5 1 課程介紹 課程的基本內(nèi)容本實(shí)訓(xùn)課程是圍繞一個(gè)完整的Java項(xiàng)目而展開的 雖然每部分內(nèi)容相對(duì)獨(dú)立 但通過(guò)幾次迭代開發(fā)后 最后形成一個(gè)完整的軟件系統(tǒng) 在軟件項(xiàng)目選擇上遵循的原則是 技術(shù)上必須覆蓋Java技術(shù)應(yīng)用最為普遍的編程領(lǐng)域等 項(xiàng)目的選擇具有良好的伸縮性 既要難易適中又能充分調(diào)動(dòng)學(xué)生的創(chuàng)新能力 讓學(xué)生有發(fā)揮的空間 項(xiàng)目 Web電子相冊(cè) 6 1 課程介紹 考核方法每個(gè)學(xué)生按照實(shí)訓(xùn)項(xiàng)目要求完成實(shí)訓(xùn)報(bào)告 教師對(duì)實(shí)訓(xùn)的各項(xiàng)內(nèi)容進(jìn)行綜合考核 比例為平時(shí)考勤20 實(shí)訓(xùn)項(xiàng)目考核80 提交源代碼和實(shí)訓(xùn)報(bào)告 7 1 課程介紹 教學(xué)思想教師精煉地講解理論知識(shí)教師做例子示范教師布置任務(wù)學(xué)生的任務(wù)課前自己學(xué)習(xí)相關(guān)的基礎(chǔ)知識(shí)上課聽基礎(chǔ)知識(shí)上課看例子上課做例子課下餓補(bǔ)基礎(chǔ)知識(shí)課下設(shè)計(jì)項(xiàng)目每次上課前檢查進(jìn)度 8 1 課程介紹 參考書目 1 邱加永 卞志城 鄭經(jīng)煜 JSP基礎(chǔ)與案例開發(fā)詳解 清華大學(xué)出版社 2009 2 溫尚書 陳石華 萬(wàn)欣 JavaWeb編程入門與實(shí)戰(zhàn) 人民郵電出版社 2010 9 2 Java軟件項(xiàng)目要求與編程環(huán)境 10 2 Java軟件項(xiàng)目要求與編程環(huán)境 項(xiàng)目要求前臺(tái)查看圖片下載圖片發(fā)表評(píng)論用戶登錄新用戶注冊(cè)后臺(tái)管理管理員登錄修改管理員密碼添加圖片管理圖片管理分類刪除評(píng)論 11 2 Java軟件項(xiàng)目要求與編程環(huán)境 軟件項(xiàng)目開發(fā)的基本過(guò)程需求獲取畫出用例圖用例描述系統(tǒng)分析架構(gòu)設(shè)計(jì)初步的類設(shè)計(jì)和類圖初步的界面設(shè)計(jì)利用分析類描述用例 順序圖 系統(tǒng)設(shè)計(jì)類細(xì)化 類圖細(xì)化順序圖 活動(dòng)圖細(xì)化系統(tǒng)實(shí)現(xiàn)利用開發(fā)工具實(shí)現(xiàn) 12 2 Java軟件項(xiàng)目要求與編程環(huán)境 客戶端用戶需求 13 2 Java軟件項(xiàng)目要求與編程環(huán)境 服務(wù)器端用戶需求 14 2 Java軟件項(xiàng)目要求與編程環(huán)境 服務(wù)器端用戶需求細(xì)化 15 2 Java軟件項(xiàng)目要求與編程環(huán)境 邏輯結(jié)構(gòu) 16 2 Java軟件項(xiàng)目要求與編程環(huán)境 關(guān)于用戶管理的功能 軟件的構(gòu)架示例如下 17 2 Java軟件項(xiàng)目要求與編程環(huán)境 符合MVC模式 18 2 JavaWeb項(xiàng)目實(shí)訓(xùn)的要求與編程環(huán)境 我們所使用的工具JDK1 6 編譯 解釋器 MyEclipse 集成開發(fā)工具 Tomcat6 JSP Servlet容器 MySQL5 1 數(shù)據(jù)庫(kù)服務(wù)器 安裝 配置Connector J mySQL的JDBC驅(qū)動(dòng) NavicatLite MySQL客戶端工具 19 2 JavaWeb項(xiàng)目實(shí)訓(xùn)的要求與編程環(huán)境 MyEclipseTomcat配置Web工程創(chuàng)建Web項(xiàng)目的結(jié)構(gòu) 20 2 JavaWeb項(xiàng)目實(shí)訓(xùn)的要求與編程環(huán)境 JavaWeb應(yīng)用程序工程制作流程設(shè)計(jì)目錄結(jié)構(gòu)編寫Web應(yīng)用程序代碼編寫部署描述文件Web xml編譯代碼將Web應(yīng)用程序打包 war 部署Web應(yīng)用程序 deploy 執(zhí)行Web應(yīng)用程序 21 2 Java軟件項(xiàng)目要求與編程環(huán)境 Java編程基本規(guī)范為GUI上的每個(gè)控件起一個(gè)規(guī)范的Name包 類 變量的命名命名規(guī)則包 Java包的名字都是由小寫單詞組成類 類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫 如果類名稱由多個(gè)單詞組成 則每個(gè)單詞的首字母均應(yīng)為大寫方法 方法的名字的第一個(gè)單詞應(yīng)以小寫字母作為開頭 后面的單詞則用大寫字母開頭 22 2 Java軟件項(xiàng)目要求與編程環(huán)境 常用類型縮寫對(duì)照 變量 變量命名的方法采用匈牙利命名法 它使用3字符前綴來(lái)表示數(shù)據(jù)類型 3個(gè)字符的前綴必須小寫 前綴后面是由表意性強(qiáng)的一個(gè)單詞或多個(gè)單詞組成的名字 而且每個(gè)單詞的首寫字母大寫 其它字母小寫 23 2 Java軟件項(xiàng)目要求與編程環(huán)境 任務(wù)1 熟悉開發(fā)環(huán)境開發(fā)環(huán)境的搭建在MyEclipse中配置好Tomcat服務(wù)器配置好MySQL數(shù)據(jù)庫(kù)在MyEclipse中利用jdbc驅(qū)動(dòng)訪問(wèn)MySQL數(shù)據(jù)庫(kù)利用MyEclipse部署Web應(yīng)用程序在MySQL創(chuàng)建用戶表提示MySQL的數(shù)據(jù)庫(kù)編碼設(shè)置為UTF 8 這樣有利于Web項(xiàng)目開發(fā)時(shí) 中文編碼的一致性MyEclipse中Tomcat服務(wù)器的設(shè)置時(shí) 要將JVM設(shè)置為本機(jī)的JDK安裝路徑 而非JRE的路徑記住netstartmysql netstopmysql命令使用navicatelite創(chuàng)建用戶表 24 3 HTML網(wǎng)頁(yè)編程基礎(chǔ) 25 網(wǎng)頁(yè)包含有文本 圖形 超級(jí)鏈接以及其他信息元素的文件 可以通過(guò)Internet傳輸 用戶可以使用瀏覽器瀏覽網(wǎng)站是一個(gè)包括多個(gè)超級(jí)鏈接在一起的網(wǎng)頁(yè)集合主頁(yè)某個(gè)站點(diǎn)的起始網(wǎng)頁(yè) 包含必要的內(nèi)容和索引信息瀏覽器是一種用于搜索 查看和管理網(wǎng)絡(luò)上信息的一種帶圖形交互界面的應(yīng)用軟件超鏈接不同網(wǎng)頁(yè)之間的連接關(guān)系地址 URL 標(biāo)識(shí)Web上的頁(yè)面和資源 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 26 瀏覽器 網(wǎng)站主頁(yè) 超鏈接 網(wǎng)頁(yè) 網(wǎng)頁(yè) URL 27 網(wǎng)頁(yè)的本質(zhì) HTML語(yǔ)言編寫的文本 HTML用于創(chuàng)建網(wǎng)頁(yè)文檔 HTML文檔是使用HTML標(biāo)記和元素創(chuàng)建的 此文件以擴(kuò)展名 htm或 html保存在Web服務(wù)器上 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 28 Web服務(wù)器軟件 瀏覽器 http請(qǐng)求 http響應(yīng) 解釋 工作原理 訪問(wèn)網(wǎng)頁(yè)的規(guī)則 HTTP協(xié)議 網(wǎng)頁(yè)開發(fā)工具 編輯生成 發(fā)布 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML Web程序 動(dòng)態(tài)生成 29 網(wǎng)站 超鏈接 網(wǎng)頁(yè) Web瀏覽器 網(wǎng)站開發(fā)工具 Web服務(wù)器 多媒體 主頁(yè) 通過(guò)http協(xié)議訪問(wèn) 具有1個(gè)或多個(gè) 發(fā)布 具有 具有 是一種 HTML 源代碼是 構(gòu)建 可視化編輯 生成 模型 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML Web程序 動(dòng)態(tài)生成 發(fā)布 30 網(wǎng)頁(yè)開發(fā)工具的主要作用HTML文檔的可視化編輯生成HTML文檔發(fā)布到Web服務(wù)器常用開發(fā)工具FrontPageDreamWeaver 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 31 HTMLHyperTextMarkupLanguage超文本標(biāo)記語(yǔ)言用它編寫的文件 文檔 的擴(kuò)展名是 html或 htm 它們是可供瀏覽器解釋瀏覽的文件格式HTML的基本形式內(nèi)容標(biāo)記名往往成對(duì)出現(xiàn) 中間的內(nèi)容是標(biāo)記的作用域 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 32 常用標(biāo)簽全局架構(gòu)標(biāo)簽 格式標(biāo)簽 文本標(biāo)簽 超鏈接標(biāo)簽 圖像標(biāo)簽 表單標(biāo)簽 表格標(biāo)簽 框架標(biāo)簽 頭元素標(biāo)簽 區(qū)域標(biāo)簽 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 33 用于Html文檔的最前邊 用來(lái)標(biāo)識(shí)Html文檔的開始 放在Html文檔的最后邊 用來(lái)標(biāo)識(shí)Html文檔的結(jié)束兩個(gè)標(biāo)志必須一塊使用 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 34 構(gòu)成Html文檔的開頭部分在此標(biāo)志對(duì)之間可以使用等標(biāo)志對(duì)標(biāo)志對(duì)之間的內(nèi)容是不會(huì)在瀏覽器的框內(nèi)顯示出來(lái)的 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 35 是html文檔的主體部分在此標(biāo)志對(duì)之間可包含 分段標(biāo)記 標(biāo)題標(biāo)記 換行標(biāo)記 水平分界標(biāo)記 等它們所定義的文本 圖像等將會(huì)在瀏覽器的框內(nèi)顯示出來(lái) 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 36 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 實(shí)例用記事本構(gòu)造最簡(jiǎn)單的HTML文檔 37 常用的標(biāo)記圖像標(biāo)記超鏈接標(biāo)記文本 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 38 表單表單是用來(lái)收集訪問(wèn)者信息的域集可實(shí)現(xiàn)網(wǎng)頁(yè)與瀏覽者的交互 達(dá)到收集瀏覽者信息的目的表單元素主要包括單行文本框文本域下拉框單選按鈕復(fù)選框 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 39 表有以下部分組成標(biāo)題行表頭單元格邊框cellspacing屬性 3 網(wǎng)頁(yè)編程基礎(chǔ) HTML 40 CSS內(nèi)聯(lián)樣式表嵌入樣式表外聯(lián)樣式表導(dǎo)入樣式表請(qǐng)大家自學(xué) 3 網(wǎng)頁(yè)編程基礎(chǔ) CSS 41 JavaScript由瀏覽器負(fù)責(zé)解釋和執(zhí)行腳本語(yǔ)言位置一般放在標(biāo)記之間放在單獨(dú)的 js文件中作為某個(gè)標(biāo)簽的事件屬性值或者超鏈接的href屬性值 3 網(wǎng)頁(yè)編程基礎(chǔ) JavaScript 42 JavaScript常用內(nèi)置對(duì)象winodw對(duì)象window open test html width 390 height 5 toolbar no resizable no top 200 left 200 document對(duì)象包含當(dāng)前文檔的信息write writeln 方法 向?yàn)g覽器輸出內(nèi)容form對(duì)象表單對(duì)象 一個(gè)文檔中可以有多個(gè)表單 表單之間互不關(guān)聯(lián)document formName或document forms index 來(lái)獲得對(duì)form的引用得到from對(duì)象后 就可以獲得form中元素的引用 3 網(wǎng)頁(yè)編程基礎(chǔ) JavaScript 43 JavaScript常用的方法 函數(shù) alertconfirmprompt 3 網(wǎng)頁(yè)編程基礎(chǔ) JavaScript 44 JavaScript中的事件處理onLoad事件onFocus事件onBlur事件onClick事件onChange事件onSelect事件onSubmit事件 3 網(wǎng)頁(yè)編程基礎(chǔ) JavaScript 45 3 網(wǎng)頁(yè)編程基礎(chǔ) 實(shí)例 HTML實(shí)例利用HTML構(gòu)造用戶登錄界面使用DreamWeaver注意表格的使用 46 3 網(wǎng)頁(yè)編程基礎(chǔ) 實(shí)例 JavaScript實(shí)例登錄form中用戶名有默認(rèn)值當(dāng)用戶名文本框獲得焦點(diǎn)則將文本框中文字選中當(dāng)點(diǎn)擊用戶名文本框 自動(dòng)清除文本框中的值 47 3 網(wǎng)頁(yè)編程基礎(chǔ) 實(shí)例 48 3 網(wǎng)頁(yè)編程基礎(chǔ) 訓(xùn)練 任務(wù)2用HTML構(gòu)造登錄表單 并且利用JavaScript驗(yàn)證表單 要求各項(xiàng)不能為空在MyEclipse中構(gòu)建Web項(xiàng)目部署到Tomcat中課后任務(wù) 學(xué)習(xí)HTML學(xué)習(xí)Servlet的基本原理熟悉MyEclipse的使用嘗試構(gòu)造出Web電子相冊(cè)的后臺(tái)管理端頁(yè)面原型根據(jù)需求進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì) 畫出E R模型 并在MySQL中建立表 49 50 51 4 Servlet基礎(chǔ)與應(yīng)用 52 Servlet服務(wù)端應(yīng)用小程序用Java編寫執(zhí)行過(guò)程與CGI腳本相似 但有以下優(yōu)勢(shì)多線程應(yīng)用編譯的程序跨平臺(tái)性 4 Servlet的應(yīng)用 基礎(chǔ) 53 Servlet的工作任務(wù)讀取客戶機(jī)發(fā)送的數(shù)據(jù)顯式數(shù)據(jù) 表單中輸入的數(shù)據(jù)隱式數(shù)據(jù) http請(qǐng)求header信息生成結(jié)果可能要與數(shù)據(jù)庫(kù)進(jìn)行交流經(jīng)過(guò)計(jì)算后形成結(jié)果發(fā)送數(shù)據(jù)到客戶機(jī)顯式數(shù)據(jù) 包括html 二進(jìn)制數(shù)據(jù)隱式數(shù)據(jù) http響應(yīng)header信息 4 Servlet的應(yīng)用 基礎(chǔ) 54 4 Servlet的應(yīng)用 實(shí)例 實(shí)例 創(chuàng)建簡(jiǎn)單的Servlet 利用MyEclipse生成一個(gè)Web項(xiàng)目在Web項(xiàng)目中創(chuàng)建一個(gè)簡(jiǎn)單的Servlet程序提示 注意Get和Post在Web xml中配置Servlet映射 55 4 Servlet的應(yīng)用 實(shí)例 創(chuàng)建Web項(xiàng)目 56 4 Servlet的應(yīng)用 實(shí)例 輸入Web項(xiàng)目信息 57 4 Servlet的應(yīng)用 實(shí)例 創(chuàng)建一個(gè)Servlet類名為TestServlet所在包為myServlets在Web xml中配置Servlet映射目的是隱藏Servlet的真正位置 58 這里的 是不能省略的 代表的含義是工程根目錄 59 4 Servlet的應(yīng)用 實(shí)例 在MyEclipse中配置好Tomcat服務(wù)器注意JVM的配置 要選擇本機(jī)的Java安裝路徑下的完整JDK目錄部署 deploy 實(shí)際是將開發(fā)環(huán)境中的程序拷貝到服務(wù)器的Webapps目錄下啟動(dòng)服務(wù)器 60 4 Servlet的應(yīng)用 實(shí)例 運(yùn)行 61 4 Servlet的應(yīng)用 實(shí)例 實(shí)例 利用表單向Servlet提交數(shù)據(jù)構(gòu)建一個(gè)HTML網(wǎng)頁(yè) 帶有form在form的action中設(shè)置要提交的servlet 此處路徑如果沒有 則表示為相對(duì)于該網(wǎng)頁(yè)的相對(duì)路徑如果有 則表示為http localhost 8080 根目錄 62 4 Servlet的應(yīng)用 實(shí)例 創(chuàng)建UserManagerServlet 63 4 Servlet的應(yīng)用 實(shí)例 關(guān)于JavaWeb項(xiàng)目中路徑的總結(jié)web xml的 表示的是http localhost 8080 工程名而HTML網(wǎng)頁(yè) 或JSP網(wǎng)頁(yè) 的form中的action屬性 如果加了 的時(shí)候表示絕對(duì)路徑http localhost 8080 而沒有加 表示的是相對(duì)路徑在Servlet中 跳轉(zhuǎn)時(shí)如果加了 的時(shí)候表示絕對(duì)路徑http localhost 8080 而沒有加 表示的是相對(duì)路徑 64 已經(jīng)加載了Servlet 調(diào)用service 方法 加載Servlet類 并創(chuàng)建新實(shí)例 調(diào)用init 方法初始化Servlet HTTP請(qǐng)求 是 HTTP響應(yīng) 初始化 處理請(qǐng)求 否 利用一個(gè)線程調(diào)用service 方法 根據(jù)所接收到的http請(qǐng)求類型調(diào)用doGet doPost Servlet的工作方式 4 Servlet的應(yīng)用 基礎(chǔ) Servlet生命周期創(chuàng)建 New 初始化 Init 服務(wù) Service 撤銷 Destory 65 HttpServlet類doGet GETdoGet HttpServletRequest HttpServletResponse doPost POSTdoPost HttpServletRequest HttpServletResponse Web容器收到一個(gè)請(qǐng)求時(shí) 調(diào)用HttpServlet類的公共的Service方法 再根據(jù)HTTP請(qǐng)求方法的類型 調(diào)用相應(yīng)的doXXX 方法 4 Servlet的應(yīng)用 基礎(chǔ) 66 GET與POST1 GET GET的參數(shù)不能超過(guò)255個(gè)字符 GET的參數(shù)用URL中的 開頭 GET servlet Query name tt age 2HTTP 1 02 POST POST請(qǐng)求后面跟著參數(shù) POST servlet QueryHTTP 1 0name ttAge 2 4 Servlet的應(yīng)用 基礎(chǔ) 67 HttpServletRequest類Servlet能訪問(wèn)的CGI變量ServletRequest參數(shù)和各種方法getInputStream getReader getParameter getHeader getCookies 4 Servlet的應(yīng)用 基礎(chǔ) 68 HttpServletResposne類把MIME編碼的數(shù)據(jù)回送給客戶getOutputStream getWriter setHeader addCookie 4 Servlet的應(yīng)用 基礎(chǔ) 69 Cookie 是一小段文本 通過(guò)JSP或Servlet 可以將Cookie保存在瀏覽器所在的客戶端的內(nèi)存或磁盤上 需要時(shí)可以通過(guò)程序讀出 要把Cookie發(fā)送到客戶端 Servlet先要調(diào)用newCookie name value cookie setXXX設(shè)置各種屬性response addCookie cookie 把cookie加入應(yīng)答頭 要從客戶端讀入Cookie Servlet應(yīng)該調(diào)用request getCookies 返回一個(gè)Cookie對(duì)象的數(shù)組 在大多數(shù)情況下 你只需要用循環(huán)訪問(wèn)該數(shù)組的各個(gè)元素尋找指定名字的Cookie 然后對(duì)該Cookie調(diào)用getValue方法取得與指定名字關(guān)聯(lián)的值 4 Servlet的應(yīng)用 基礎(chǔ) 70 Servlet的會(huì)話管理機(jī)制 根據(jù)設(shè)計(jì) HTTP是一種無(wú)狀態(tài)的協(xié)議 它意味著Web應(yīng)用并不了解有關(guān)同一用戶以前請(qǐng)求的信息 維持會(huì)話狀態(tài)信息的方法之一是使用Servlet容器提供的會(huì)話跟蹤功能 HttpSession接口提供了一種把對(duì)象保存到內(nèi)存 在同一用戶的后繼請(qǐng)求中提取這些對(duì)象的標(biāo)準(zhǔn)辦法 保存對(duì)象 setAttribute Stringname Objectvalue 提取對(duì)象 getAttribute Stringname 4 Servlet的應(yīng)用 基礎(chǔ) 71 Servlet調(diào)用方法 在瀏覽器中輸入Servlet的URL通過(guò)HTML頁(yè)面調(diào)用Servlet get方式或者post方式從另一個(gè)Servlet中調(diào)用Servlet 4 Servlet的應(yīng)用 基礎(chǔ) 72 在Servlet中跳轉(zhuǎn)到其他頁(yè)面方法一 使用HttpServletResponse的sendRedirect 方法在跳轉(zhuǎn)之前所存儲(chǔ)的request的屬性都會(huì)被清空地址欄會(huì)顯示出所跳轉(zhuǎn)到的新地址實(shí)現(xiàn)跳轉(zhuǎn)需要瀏覽器和服務(wù)器之間進(jìn)行多次通信方法二 使用RequestDispatcher的forward 方法將Request中的屬性傳遞到所跳轉(zhuǎn)的新頁(yè)面跳轉(zhuǎn)時(shí) 不需要服務(wù)器與瀏覽器之間的額外通信瀏覽器地址欄不顯示實(shí)際的新頁(yè)面的URL 4 Servlet的應(yīng)用 基礎(chǔ) 73 中文編碼在Servlet中 request setCharacterEncoding utf 8 設(shè)置Servlet從表單讀取數(shù)據(jù)的編碼格式解決讀取表單中中文參數(shù)的問(wèn)題response setContentType text html charset utf 8 相當(dāng)于設(shè)置Servlet返回的HTML的編碼解決向客戶端輸出中文的問(wèn)題該語(yǔ)句要在PrintWriterout response getWriter 語(yǔ)句之前才能起作用 4 Servlet的應(yīng)用 基礎(chǔ) 74 Servlet開發(fā) 4 Servlet的應(yīng)用 基礎(chǔ) 75 J2EE應(yīng)用程序目錄結(jié)構(gòu) 4 Servlet的應(yīng)用 基礎(chǔ) 76 實(shí)例 不帶數(shù)據(jù)庫(kù)的登錄程序構(gòu)建login html構(gòu)建用于登錄的servlet LoginCheck構(gòu)建web xml中的servlet路徑映射在servlet中顯示登錄表單提交上來(lái)的用戶名和密碼注意編碼問(wèn)題固定密碼的驗(yàn)證邏輯登錄成功頁(yè)面跳轉(zhuǎn) 登錄失敗頁(yè)面跳轉(zhuǎn)利用session防止繞過(guò)登錄頁(yè)面直接進(jìn)入 4 Servlet的應(yīng)用 實(shí)例 77 任務(wù)3 不帶數(shù)據(jù)庫(kù)的登錄程序使用Servlet完成一個(gè)用戶登錄驗(yàn)證的程序 無(wú)數(shù)據(jù)庫(kù)支持 若成功則導(dǎo)航到成功頁(yè)面 若失敗則導(dǎo)航到失敗頁(yè)面提示構(gòu)建login html構(gòu)建用于登錄的servlet構(gòu)建web xml中的servlet路徑映射在servlet中顯示登錄表單提交上來(lái)的用戶名和密碼注意編碼問(wèn)題固定密碼的驗(yàn)證邏輯登錄成功頁(yè)面跳轉(zhuǎn) 登錄失敗頁(yè)面跳轉(zhuǎn)利用session防止繞過(guò)登錄頁(yè)面直接進(jìn)入 4 Servlet的應(yīng)用 任務(wù) 78 4 Servlet的應(yīng)用 任務(wù) 79 4 Servlet的應(yīng)用 任務(wù) 任務(wù)4 Web電子相冊(cè)系統(tǒng)的面向?qū)ο蠓治霭凑者吔?控制 實(shí)體的模式畫出分析類圖畫出系統(tǒng)中主要的活動(dòng)流程 80 4 Servlet的應(yīng)用 任務(wù) 開發(fā)過(guò)程 DougRosenbergandMattStephens UseCaseDrivenObjectModelingwithUML 81 4 Servlet的應(yīng)用 任務(wù) 示例 登錄用例的分析類圖 前端控制器 應(yīng)用控制器 82 4 Servlet的應(yīng)用 任務(wù) 成功登錄的順序圖 83 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 84 JDBC介紹 JDBC驅(qū)動(dòng)分類 使用JDBC編程的步驟 實(shí)例 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 85 JavaDataBaseConnectivity是一種可用于執(zhí)行SQL語(yǔ)句的JavaAPI 為不同的DBMS提供統(tǒng)一的數(shù)據(jù)庫(kù)編程接口 1 JDBC介紹 背景Java誕生后 沒有Java語(yǔ)言直接可使用的數(shù)據(jù)庫(kù)訪問(wèn)的API在Java程序中嵌入C語(yǔ)言的ODBC函數(shù)調(diào)用 使得Java的優(yōu)秀特性無(wú)法發(fā)揮 平臺(tái)無(wú)關(guān) 面向?qū)ο?JDK1 1 java sql包 即JDBCAPI 成為Java語(yǔ)言的標(biāo)準(zhǔn)部件 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 86 JDBC特點(diǎn)ForJavaSQL層API與數(shù)據(jù)庫(kù)無(wú)關(guān)的 統(tǒng)一的API 編寫一次 隨處運(yùn)行 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 87 分類Type1 橋驅(qū)動(dòng)Type2 本地驅(qū)動(dòng)Type3 基于中間件的驅(qū)動(dòng)Type4 基于網(wǎng)絡(luò)協(xié)議的驅(qū)動(dòng)注意 Type1 Type2需要在客戶端安裝代碼Type3 Type4是純Java驅(qū)動(dòng) 2 JDBC驅(qū)動(dòng)分類 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 88 Type1即JDBC ODBC橋 提供了經(jīng)由一種或多種ODBC驅(qū)動(dòng)進(jìn)行訪問(wèn)的JDBC接口 通常的DBMS都支持微軟提出的ODBC規(guī)范 因此該模式可以普遍使用 非常靈活 具有很好的代碼移植性 因?yàn)槊看握{(diào)用都要轉(zhuǎn)換成ODBC調(diào)用 所以這種模式與其他模式相比性能最差 Type2使用NativeAPI它將JDBC調(diào)用轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù) Oracle Sybase Informix DB2等 客戶端接口的調(diào)用 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 89 Type3純Java驅(qū)動(dòng)將JDBC調(diào)用轉(zhuǎn)換為中間網(wǎng)絡(luò)協(xié)議 然后轉(zhuǎn)換為DBMS協(xié)議中間網(wǎng)絡(luò)協(xié)議層起到一個(gè)讀取數(shù)據(jù)庫(kù)的中間件的作用 能夠連接許多類型的數(shù)據(jù)庫(kù) 因而是最靈活的JDBC模式 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 90 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 Type4純Java驅(qū)動(dòng)一般是數(shù)據(jù)庫(kù)廠商才能實(shí)現(xiàn)直接調(diào)用DBMS 數(shù)據(jù)庫(kù)管理系統(tǒng) 使用的網(wǎng)絡(luò)協(xié)議 91 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 92 Java應(yīng)用程序 JDBCAPI JDBC ODBC橋 JDBC Native橋 JDBC Net JavaJDBC ODBC驅(qū)動(dòng) NativeAPI C 中間件服務(wù)器 數(shù)據(jù)庫(kù) 客戶端 93 步驟加載驅(qū)動(dòng)程序DriverManager類獲取數(shù)據(jù)庫(kù)連接Connection類創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)聲明Statement類執(zhí)行SQL語(yǔ)句 3 使用JDBC編程的步驟 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 94 DriverManager Connection Statement ResultSet 數(shù)據(jù)庫(kù) 創(chuàng)建 創(chuàng)建 創(chuàng)建 建立連接 SQL語(yǔ)句 數(shù)據(jù) 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 95 java sql包中的主要類DriverManager作用于用戶和驅(qū)動(dòng)程序之間 它跟蹤可用的驅(qū)動(dòng)程序 并在數(shù)據(jù)庫(kù)和相應(yīng)驅(qū)動(dòng)程序之間建立連接驅(qū)動(dòng)加載方法 Class forName 類名 ConnectionConnectioncon DriverManager getConnection Stringurl Stringuser Stringpassword url jdbc subprotocol subname 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 96 StatementTheobjectusedforexecutingastaticSQLstatementandreturningtheresultsitproducesResultSetAtableofdatarepresentingadatabaseresultset whichisusuallygeneratedbyexecutingastatementthatqueriesthedatabase 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 97 加載驅(qū)動(dòng)程序Class forName sun jdbc odbc JdbcOdbcDriver newInstance 獲取數(shù)據(jù)庫(kù)連接Connectioncon DriverManager getConnection jdbc odbc studs userID Password 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)聲明Statementstmt con createStatement 執(zhí)行SQL語(yǔ)句ResultSetrs stmt executeQuery select fromstutable 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 98 ResultSet類移動(dòng)next previous first last 取字段值ObjectgetObject 字段名 getInt 字段名 getFloat 字段名 getString 字段名 getDate 字段名 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 99 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 實(shí)例訪問(wèn)數(shù)據(jù)庫(kù) 取出所有數(shù)據(jù) 并顯示出所有記錄的某字段值例如 顯示出用戶表的所有用戶姓名利用PreparedStatement聯(lián)系訪問(wèn)指定用戶 取出密碼提示注意相應(yīng)數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)是否配置好注意數(shù)據(jù)庫(kù)連接串的基本語(yǔ)法本例的SQL語(yǔ)句沒有參數(shù) 如果有參數(shù)怎么辦 數(shù)據(jù)訪問(wèn)相關(guān)的Java語(yǔ)句必須放在try catch 中 異常處理本例無(wú)需編寫Web程序 只需編寫一個(gè)帶main函數(shù)的Java類即可 將結(jié)果寫在控制臺(tái)上即可 100 簡(jiǎn)單實(shí)驗(yàn)代碼 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 101 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 利用PreparedStatement聯(lián)系訪問(wèn)指定用戶 取出密碼 102 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 實(shí)例利用Servlet實(shí)現(xiàn)帶數(shù)據(jù)庫(kù)的登錄將MySQL的JDBC驅(qū)動(dòng)jar包文件放入web inf目錄下的lib目錄下 1 直接在Servlet中訪問(wèn)數(shù)據(jù)庫(kù) 2 創(chuàng)建UserDAO類 構(gòu)建isCheck 方法 在該方法中訪問(wèn)數(shù)據(jù)庫(kù)并驗(yàn)證用戶 103 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 104 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 實(shí)例 Web電子相冊(cè)項(xiàng)目的數(shù)據(jù)庫(kù)設(shè)計(jì)E R實(shí)體聯(lián)系圖注意主鍵和外鍵 105 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 106 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 實(shí)例 物理模型 107 5 JDBC基礎(chǔ)知識(shí)與應(yīng)用 任務(wù) 任務(wù)4 帶數(shù)據(jù)庫(kù)的登錄程序Web電子相冊(cè)數(shù)據(jù)庫(kù)E R模型設(shè)計(jì)并在MySQL上構(gòu)造物理數(shù)據(jù)表重構(gòu)Web電子相冊(cè)管理員登錄功能 帶數(shù)據(jù)庫(kù)支持 在Servlet中直接訪問(wèn)數(shù)據(jù)庫(kù)然后 將訪問(wèn)User表的程序放入單獨(dú)的類提示在Eclipse中加入mySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng) 108 6 JavaBean與DAO模式 109 JavaBean與DAO JavaBean一個(gè)特殊的Java類沒有任何公共變量變量名首字母必須小寫 例如name通過(guò)getter setter方法來(lái)讀 寫變量的值 例如getName 實(shí)現(xiàn)serializable接口將對(duì)象的狀態(tài)保存在存儲(chǔ)媒體中以便可以在以后重新創(chuàng)建出完全相同的副本 按值將對(duì)象從一個(gè)應(yīng)用程序域發(fā)送至另一個(gè)應(yīng)用程序域用途 主要用于在頁(yè)面之間傳遞一個(gè)被封裝的數(shù)據(jù)對(duì)象 110 例子 User類 111 JavaBean與DAO JavaBean的范圍Page 該JavaBean只能在實(shí)例化它的頁(yè)面中使用 這種JavaBean被存儲(chǔ)在PageContext對(duì)象中Request 使用jsp include jsp forward RequestDispatcher的include 或forward 方法時(shí) 兩個(gè)JSP頁(yè)面或者Servlet頁(yè)面之間共享這個(gè)JavaBean 該JavaBean實(shí)例被存儲(chǔ)在ServletRequest對(duì)象中Session 這種JavaBean實(shí)例被存儲(chǔ)在HttpSession對(duì)象中 該JavaBean實(shí)例會(huì)在整個(gè)會(huì)話過(guò)程中存在 Application 這種JavaBean實(shí)例存儲(chǔ)到ServletContext中 該JavaBean可以被運(yùn)行在應(yīng)用服務(wù)器的相同生命周期中的任何對(duì)象 JSP或Servlet 調(diào)用 112 JavaBean與DAO DAO模式DataAccessObject用來(lái)抽象和封裝所有對(duì)數(shù)據(jù)源的訪問(wèn)完全隱藏了數(shù)據(jù)源的實(shí)現(xiàn)細(xì)節(jié)當(dāng)?shù)讓訑?shù)據(jù)源實(shí)現(xiàn)發(fā)生變化時(shí) 只要DAO對(duì)象向客戶提供的接口不變 就不會(huì)影響到客戶程序 113 JavaBean與DAO UserDAO類的結(jié)構(gòu) 114 JavaBean與DAO 部分 115 JavaBean與DAO 數(shù)據(jù)庫(kù)操作獨(dú)立出來(lái) 116 JavaBean與DAO 117 JavaBean與DAO 將數(shù)據(jù)庫(kù)訪問(wèn)連接參數(shù)放入config包中的db properties文件 db properties文件 118 JavaBean與DAO Bean的使用 119 JavaBean與DAO 任務(wù)5 分層架構(gòu)的帶數(shù)據(jù)庫(kù)的登錄程序構(gòu)建User類構(gòu)建UserDAO類 在該類中構(gòu)造isCheck Useruser 方法在Servlet中接收登錄界面提交的用戶名和密碼 構(gòu)造User對(duì)象 構(gòu)造UserDAO對(duì)象 調(diào)用isCheck方法 120 JavaBean與DAO 完成登錄工作的設(shè)計(jì)類 121 JavaBean與DAO 成功登錄的順序圖 122 JavaBean與DAO login jsp 123 JavaBean與DAO UserServlet類 UserManager doPost方法登錄部分關(guān)鍵代碼 124 JavaBean與DAO UserBiz類 isChecked 方法 125 JavaBean與DAO UserDAO類 isChecked 方法 126 JavaBean與DAO dao包和pojo包 127 7 JSP原理及應(yīng)用 128 JSP JavaServerPages 1 基于JavaServlet技術(shù) 2 頁(yè)面包括靜態(tài)HTMLJSP標(biāo)記腳本 129 JSP特點(diǎn)內(nèi)容的生成和顯示分離 JavaBeans 生成可重用的組件 JavaBeans 采用標(biāo)記簡(jiǎn)化頁(yè)面開發(fā)能提供所有Servlets功能健壯的存儲(chǔ)管理和安全性一次編寫 隨處運(yùn)行JSP的平臺(tái)適應(yīng)性更廣利用JDBC連接數(shù)據(jù)庫(kù) 130 JSP實(shí)現(xiàn)原理客戶對(duì)JSP的請(qǐng)求直接發(fā)送給JSP引擎JSP引擎接受到請(qǐng)求后 按照J(rèn)SP源代碼所規(guī)定的內(nèi)容生成給客戶端的響應(yīng)把響應(yīng)傳遞給客戶端的瀏覽器 131 JSP與ServletJSP文檔在后臺(tái)會(huì)自動(dòng)轉(zhuǎn)換為ServletJSP更簡(jiǎn)捷 適合于生成大量的HTML 但與HTML標(biāo)記混在一起Servlet適合于生成大量的二進(jìn)制數(shù)據(jù) 訪問(wèn)數(shù)據(jù)庫(kù)等工作 用它生成大量的html會(huì)很麻煩JSP與Servlet配合使用 132 jsp 133 JSP程序的基本結(jié)構(gòu) JSP頁(yè)面 Elements JSPComments TemplateData Directives Actions Scripting delarations Scriptlets expressions 134 JSPComments 注釋 第一種在結(jié)果html文檔中顯示第二種不在結(jié)果html文檔中顯示 TemplateData是不經(jīng)過(guò)轉(zhuǎn)換的文本一般是標(biāo)準(zhǔn)的HTML元素 135 Declarations 聲明 在JSP程序中聲明方法和全局變量形式可以一次聲明多個(gè)變量和方法以分號(hào)結(jié)尾 136 Scriplet 小腳本 包含一個(gè)有效的程序段Java代碼段例如 137 Expression 表達(dá)式 表示一個(gè)值在頁(yè)面動(dòng)態(tài)生成時(shí)以字符串的形式插入到頁(yè)面中的相應(yīng)位置 形式例如 138 Directives 指令 影響由JSP頁(yè)產(chǎn)生的Servlet的總體結(jié)構(gòu)語(yǔ)法指令page指令屬性 import contentType language pageEncoding include指令 在轉(zhuǎn)換為servlet前插入 屬性 file作用 把其他的文件加入到當(dāng)前的JSP文件中 例子 test jsp test include jsp 139 Actions 動(dòng)作 jsp include 在頁(yè)面被請(qǐng)求時(shí)包含進(jìn)一個(gè)文件 jsp forward 讓請(qǐng)求者可以向前到一個(gè)新的頁(yè)面 jsp useBean 找到或?qū)嵗粋€(gè)JavaBean jsp setProperty 設(shè)置一個(gè)JavaBean屬性 jsp getProperty 將JavaBean的屬性插入到輸出 jsp plugin 執(zhí)行一個(gè)Applet或Bean用OBJECT或EMBED標(biāo)簽為Javaplugins生成特定的瀏覽器的代碼 140 include指令與include動(dòng)作區(qū)別include指令 當(dāng)被包含的文件內(nèi)容發(fā)生變化時(shí) 服務(wù)器可能監(jiān)測(cè)不到 此時(shí)服務(wù)器不會(huì)對(duì)它進(jìn)行重新轉(zhuǎn)換和編譯 Include動(dòng)作 在客戶端對(duì)JSP文件發(fā)出請(qǐng)求的時(shí)候?qū)?duì)應(yīng)包含文件的輸出內(nèi)容包含進(jìn)來(lái) 它總是會(huì)檢查被包含文件的變化 141 Haveaniceday Havealousyday 經(jīng)過(guò)轉(zhuǎn)譯后將會(huì)是如下形式 if Math random niceday else out println Havealousyday JSP被編譯為Servlet 142 JSP內(nèi)建對(duì)象requestresponseoutsessionpageContextapplicationconfigpage 143 request獲取請(qǐng)求的頭部信息getHeader Stringname 獲取客戶端傳送的數(shù)據(jù)getParameter Stringname 獲取客戶端host IP獲取服務(wù)器名字 144 response用于向客戶端發(fā)送數(shù)據(jù)addCookie Cookiecook setHeader Stringname Stringvalue sendRedirect out用來(lái)向客戶端輸出數(shù)據(jù)out print out println 145 session用來(lái)保存每一個(gè)用戶信息getAttribute Stringname setAttribute Stringname java lang Objectvalue removeAttribute Stringname application用來(lái)在多個(gè)程序中保存信息每個(gè)用戶都共用同一個(gè)application對(duì)象getAttribute Stringname setAttribute Stringname java lang Objectvalue 146 pageContext管理JSP中已經(jīng)命名對(duì)象的訪問(wèn)config用來(lái)配置處理JSP程序的句柄Page 147 實(shí)例構(gòu)造管理端界面利用include動(dòng)作包含界面的上面頭部和下面尾部 148 構(gòu)造后臺(tái)管理界面 admin jsp 頭部Top jsp 尾部foot jsp 導(dǎo)航條navibar jsp 149 admin jsp 150 top jspfoot jsp 151 navibar jsp 152 實(shí)例構(gòu)造修改用戶密碼功能 153 admin jsp表現(xiàn) 154 modifyPass jsp表現(xiàn) 155 modifyPass jsp代碼 提交給對(duì)應(yīng)的servlet并標(biāo)明要做什么 利用session對(duì)象取出user對(duì)象中的name屬性 156 result jsp 用于顯示反饋結(jié)果 由Servlet中設(shè)置msg的值 157 UserServlet UserManager doPost 方法 158 UserBiz類 updatePassWord 方法 159 UserDAO類 updatePassWord 方法 160 任務(wù)6 1 利用JSP構(gòu)造后臺(tái)管理頁(yè)面 利用jsp include包括頂部頁(yè)面top jsp navibar jsp 底部頁(yè)面foot jsp 2 利用Servlet JSP JavaBean實(shí)現(xiàn)多層結(jié)構(gòu)下的 添加分類 功能 161 8 分層架構(gòu)與MVC 162 Model1 163 Model2 MVC 模型 封裝了應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu)和事務(wù)邏輯視圖 模型的外在表現(xiàn)控制器 對(duì)用戶的輸入進(jìn)行相應(yīng)處理并將模型和視圖聯(lián)系在一起 164 分層 165 修改密碼 ModifyPass jsp Form 提交給相應(yīng)的Servlet View 166 在UserServlet中撰寫相應(yīng)的處理代碼 control 167 添加分類 Class add jsp Form View 提交給相應(yīng)的Servlet 168 在ClassServlet中撰寫相應(yīng)的處理代碼 control 169 9 EL與JSTL 170 9 EL與JSTL EL ExpressionLanguage JSP2 0后增加的重要功能 要求Tomcat5 0以上訪問(wèn)存儲(chǔ)對(duì)象對(duì)JavaBean簡(jiǎn)化訪問(wèn)對(duì)集合的簡(jiǎn)化訪問(wèn)簡(jiǎn)單運(yùn)算符條件輸出 varName 171 9 EL與JSTL varName 以此從PageContext HttpServletRequest HttpSession ServletContext中查找名字為varName的屬性所對(duì)應(yīng)的值 firstVar secondVar thirdVar EL作用域 172 9 EL與JSTL EL訪問(wèn)JavaBean beanName beanVar 例如 在Servlet中request setAttribute bookBean book 在jsp中 bookBean publisher publisherName 173 9 EL與JSTL EL訪問(wèn)集合 collection index 例如 students 0 name 其中studnets是student對(duì)象的數(shù)組EL運(yùn)算略 174 9 EL與JSTL JSTL JavaServerPagesStandardTagLibrary JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)提供Web開發(fā)人員通用的標(biāo)簽庫(kù)函數(shù) 用于取代在JSP頁(yè)面上直接寫Java代碼的做法標(biāo)簽庫(kù)c 核心標(biāo)簽庫(kù)fmt I18N標(biāo)簽庫(kù)sql SQL標(biāo)簽庫(kù)xml XML標(biāo)簽庫(kù)fn 函數(shù)標(biāo)簽庫(kù) 175 9 EL與JSTL 在JSP中顯示數(shù)據(jù)在JSP中定義變量并賦值用于移除指定范圍內(nèi)的某個(gè)變量用于捕獲被嵌套在其中的操作的異常對(duì)象 176 9 EL與JSTL 完成if功能3 var result 完成ifelse功能 177 9 EL與JSTL 標(biāo)簽其他標(biāo)簽庫(kù)略 178 9 EL與JSTL 實(shí)例 實(shí)例利用EL和JSTL構(gòu)建表格顯示所有分類Jsp頁(yè)面 179 9 EL與JSTL 實(shí)例 pojo包的PhotoClass類 180 9 EL與JSTL 實(shí)例 PhotoClassDAO 181 9 EL與JSTL 實(shí)例 PhotoClassBiz 182 9 EL與JSTL 實(shí)例 PhotoClassServlet ClassManager 傳遞bean集合給 183 9 EL與JSTL 任務(wù) 任務(wù)7實(shí)現(xiàn)Web電子相冊(cè) 圖片分類管理 功能首先列出分類信息可以進(jìn)行刪除和修改 184 9 EL與JSTL 任務(wù) 185 10 實(shí)用技術(shù) 186 10 實(shí)用技術(shù) 文件上傳 使用jspsmart組件完成上傳工作將對(duì)應(yīng)的jar文件放入web inf lib目錄下步驟編寫上傳界面編寫后臺(tái)處理程序 187 10 實(shí)用技術(shù) 文件上傳 圖片上傳簡(jiǎn)單例子通過(guò)jspSmartUpload上傳圖片 188 10 實(shí)用技術(shù) 文件上傳 上傳處理文件 189 任務(wù)8 1 實(shí)現(xiàn)Web電子相冊(cè)中的 圖片上傳 功能 2 實(shí)現(xiàn)Web電子相冊(cè)中的 圖片管理 功能 190 10 實(shí)用技術(shù) 文件上傳1 先上傳再增加圖片 圖片添加界面photo add jsp 圖片上傳界面upload jsp upimg jsp 191 10 實(shí)用技術(shù) 文件上傳1 將圖片地址傳回圖片添加界面 192 10 實(shí)用技術(shù) 文件上傳1 圖片上傳界面upload jsp中的主要代碼 193 10 實(shí)用技術(shù) 文件上傳1 后臺(tái)處理程序upimg jsp中的主要代碼 使用jspSmartUpload 194 10 實(shí)用技術(shù) 文件上傳2 上傳與增加圖片信息一起進(jìn)行 使用commons fileupload類 選擇文件 文件并未上傳 圖片信息與上傳一同進(jìn)行 圖片添加界面photo add1 jsp 195 10 實(shí)用技術(shù) 文件上傳2 上傳與增加圖片信息一起進(jìn)行 需要兩個(gè)jar包支持 196 10 實(shí)用技術(shù) 文件上傳2 上傳與增加圖片信息一起進(jìn)行 PhotoServelt PhotoManager 197 10 實(shí)用技術(shù) 文件上傳2 上傳與增加圖片信息一起進(jìn)行 PhotoServelt PhotoManager 198 任務(wù)9圖片管理首先顯示圖片分類 相冊(cè) 然后選擇一個(gè)分類的圖片進(jìn)行管理可以對(duì)圖片進(jìn)行刪除和描述信息的編輯 199 10 實(shí)用技術(shù) 中文亂碼問(wèn)題 字符編碼ASCII128個(gè)字符 面向使用英語(yǔ)的國(guó)家ISO 8859解決歐洲個(gè)國(guó)家的字符編碼問(wèn)題GB2312 GBK GB18030漢字編碼Unicode使用雙字節(jié)表達(dá)每個(gè)字符的編碼 統(tǒng)一全球編碼UTF 8變長(zhǎng)的編碼 對(duì)不同的Unicode可能采用不同的長(zhǎng)度 從而減少存儲(chǔ)或傳輸?shù)臄?shù)據(jù)量 200 10 實(shí)用技術(shù) 中文亂碼問(wèn)題 亂碼原因在JSP中pageEncoding是指JSP文件自身的編碼格式contentType的charset是指服務(wù)器發(fā)送給客戶端的內(nèi)容編碼如果pageEncoding存在 那么JSP頁(yè)面的字符編碼由pageEncoding決定 否則由contentType的charset決定 如果都不存在 則默認(rèn)為ISO 8859 1在Web應(yīng)用中 瀏覽器 Web服務(wù)器 Web應(yīng)用程序和數(shù)據(jù)庫(kù)等各個(gè)部分都有可能使用不同的字符集 字符在不同字符集之間進(jìn)行轉(zhuǎn)換時(shí) 就可能出現(xiàn)亂碼問(wèn)題 201 10 實(shí)用技術(shù) 中文亂碼問(wèn)題 解決方案使用過(guò)濾器解決比較方便過(guò)濾器當(dāng)客戶請(qǐng)求某個(gè)html JSP Servlet之前 過(guò)濾器先 過(guò)濾 或者當(dāng)服務(wù)器對(duì)客戶端進(jìn)行響應(yīng)之前 過(guò)濾器先 過(guò)濾 從一個(gè)頁(yè)面跳轉(zhuǎn) forward 到其他頁(yè)面的時(shí)候在包含 include 其他內(nèi)容時(shí)在發(fā)生錯(cuò)誤時(shí)作用對(duì)HttpServletRequest進(jìn)行預(yù)處理 對(duì)HttpServletResponse進(jìn)行后處理 202 10 實(shí)用技術(shù) 中文亂碼問(wèn)題 創(chuàng)建一個(gè)過(guò)濾器的兩個(gè)步驟 創(chuàng)建Filter處理類在Web xml文件中配置Filter過(guò)濾器必須實(shí)現(xiàn)javax servlet Filter接口 接口3方法voidinit FilterConfigconfig 初始化voiddestroy 銷毀前voiddoFilter ServletRequestRequest ServletResponseresponse FilterChainchain 實(shí)現(xiàn)過(guò)濾功能 203 10 實(shí)用技術(shù) 中文亂碼問(wèn)題 web xml 204 10 實(shí)用技術(shù) 登錄檢測(cè) 登錄檢測(cè)防止用戶在不登錄的情況下 直接進(jìn)入管理頁(yè)面使用過(guò)濾器實(shí)現(xiàn) 205 10 實(shí)用技術(shù) 登錄檢測(cè) web xml 206 10 實(shí)用技術(shù) 分頁(yè)顯示 分頁(yè)顯示的策略基于緩存 一次性地將所有的記錄取出來(lái)放到session中 優(yōu)點(diǎn) 除第一頁(yè)外 后續(xù)的頁(yè)面都能夠很快的訪問(wèn)到所需數(shù)據(jù)缺點(diǎn) 第一頁(yè)顯示可能很慢 如果用戶多時(shí) 內(nèi)存開銷大基于查詢 根據(jù)需要從數(shù)據(jù)中取數(shù)據(jù)優(yōu)點(diǎn) 第一個(gè)頁(yè)面和后續(xù)頁(yè)面訪問(wèn)時(shí)間差不多缺點(diǎn) 每次都要從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù) 頻繁地訪問(wèn)數(shù)據(jù)庫(kù) 207 10 實(shí)用技術(shù) 分頁(yè)顯示 步驟 1 構(gòu)建Pager類 2 修改dao包中的類 讓相關(guān)方法返回Pager對(duì)象 3 修改biz包中的類 讓相關(guān)方法返回Pager對(duì)象 4 修改servlet類 將Pager類放入reqeust變量中 5 修改JSP頁(yè)面 208 10 實(shí)用技術(shù) 分頁(yè)顯示 Pager類 部分 209 10 實(shí)用技術(shù) 分頁(yè)顯示 PhotoClassDAO 210 10 實(shí)用技術(shù) 分頁(yè)顯示 PhotoClassBiz 211 10 實(shí)用技術(shù) 分頁(yè)顯示 PhotoClassServlet ClassManager 212 10 實(shí)用技術(shù) 分頁(yè)顯示 class manage jsp 213 10 實(shí)用技術(shù) 任務(wù) 任務(wù)10Web電子相冊(cè)中前臺(tái)圖片瀏覽Web電子相冊(cè)中后臺(tái)評(píng)論管理實(shí)現(xiàn)Web電子相冊(cè)中相應(yīng)功能 例如圖片瀏覽 分類管理 評(píng)論管理等 的分頁(yè)顯示 選作任務(wù) 214 10 實(shí)用技術(shù) 任務(wù) Photo類 215 10 實(shí)用技術(shù) 任務(wù) PhotoDAO 216 10 實(shí)用技術(shù) 任務(wù) PhotoBiz 217 10 實(shí)用技術(shù) 任務(wù) PhotoServlet PhotoManager 218 10 實(shí)用技術(shù) 任務(wù) main jsp主要代碼 219 10 實(shí)用技術(shù) 任務(wù) index jsp 220 11 Ajax技術(shù) 221 11 Ajax簡(jiǎn)介 AjaxAsynchronousJavascriptandXML2005 2 JesseJamesGarrett ANewApproachtoWebApplications 綜合運(yùn)用JavaScript CSS DOM XMLHttpRequest XML等技術(shù)改善B S結(jié)構(gòu)客戶端用戶體驗(yàn)效果的方法稱為Ajax傳統(tǒng)Web應(yīng)用的問(wèn)題 傳統(tǒng)的Web應(yīng)用允許用戶端填寫表單 form 當(dāng)提交表單時(shí)就向Web服務(wù)器發(fā)送一個(gè)請(qǐng)求 服務(wù)器接收并處理傳來(lái)的表單 然后送回一個(gè)新的網(wǎng)頁(yè) 這個(gè)做法浪費(fèi)了許多帶寬 因?yàn)樵谇昂髢蓚€(gè)頁(yè)面中的大部分HTML代碼往往是相同的 由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請(qǐng)求 應(yīng)用的響應(yīng)時(shí)間就依賴于服務(wù)器的響應(yīng)時(shí)間 這導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多 222 11 Ajax簡(jiǎn)介 223 11 Ajax簡(jiǎn)介 Ajax的核心是JavaScript對(duì)象XMLHttpRequest 該對(duì)象在InternetExplorer5中首次引入 它是一種支持異步請(qǐng)求的技術(shù) 簡(jiǎn)而言之 XMLHttpRequest使您可以使用JavaScript向服務(wù)器提出請(qǐng)求并處理響應(yīng) 而不阻塞用戶 224 11 Ajax簡(jiǎn)介 XMLHttpRequestXMLHttpRequest對(duì)象在大部分瀏覽器上已經(jīng)實(shí)現(xiàn)而且擁有一個(gè)簡(jiǎn)單的接口允許數(shù)據(jù)從客戶端傳遞到服務(wù)端 但并不會(huì)打斷用戶當(dāng)前的操作 使用XMLHttpRequest傳送的數(shù)據(jù)可以是任何格式 雖然從名字上建議是XML格式的數(shù)據(jù) open 初始化HTTP請(qǐng)求參數(shù) 例如URL和HTTP方法 但是并不發(fā)送請(qǐng)求 send 發(fā)送HTTP請(qǐng)求 使用傳遞給open 方法的參數(shù) 以及傳遞給該方法的可選請(qǐng)求體 onreadystatechange事件用來(lái)定義XMLHttpRequest對(duì)象狀態(tài)改編事件發(fā)生時(shí)的監(jiān)聽器 它對(duì)應(yīng)一個(gè)JavaScript函數(shù) 225 11 Ajax簡(jiǎn)介 226 11 Ajax簡(jiǎn)介 227 11 Ajax簡(jiǎn)介 示例檢測(cè)用戶名是否存在 228 11 Ajax簡(jiǎn)介 Reg html 229 11 Ajax簡(jiǎn)介 Reg html 設(shè)置回調(diào)函數(shù) 230 11 Ajax簡(jiǎn)介 CheckUserName jsp 231 11 Ajax簡(jiǎn)介 調(diào)用servlet的版本 232 11 Ajax簡(jiǎn)介 UserServlet UserManager 233 11 Ajax簡(jiǎn)介 常用Ajax框架PrototypeDWRjQuery 234 任務(wù)11為Web電子相冊(cè)中 圖片分類信息 功能中添加查重功能可以不提交表單提示該分類是否已經(jīng)存在 選作內(nèi)容 235 任務(wù)12完成Web電子相冊(cè)的所有業(yè)務(wù)功能測(cè)試程序調(diào)試程序 236 實(shí)訓(xùn)報(bào)告 實(shí)訓(xùn)目的實(shí)訓(xùn)的任務(wù)和要求實(shí)訓(xùn)過(guò)程與內(nèi)容項(xiàng)目的需求分析項(xiàng)目的設(shè)計(jì)項(xiàng)目實(shí)現(xiàn)中的關(guān)鍵問(wèn)題項(xiàng)目實(shí)現(xiàn)的效果實(shí)訓(xùn)心得體會(huì)參考文獻(xiàn) 237 4 實(shí)訓(xùn)報(bào)告 形式打印在A4紙上 8000字以上圖文并茂要當(dāng)做鍛煉 自己完成提交時(shí)間2012年1月15日下午之前提交報(bào)告 紙質(zhì) 電子版 提交代碼 電子- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- JavaWeb實(shí)訓(xùn) JavaWeb 實(shí)訓(xùn) PPT 課件
鏈接地址:http://www.820124.com/p-6578719.html