JSP基礎(chǔ)與案例開(kāi)發(fā)詳解:第9章 實(shí)用技術(shù)淺析_第1頁(yè)
JSP基礎(chǔ)與案例開(kāi)發(fā)詳解:第9章 實(shí)用技術(shù)淺析_第2頁(yè)
JSP基礎(chǔ)與案例開(kāi)發(fā)詳解:第9章 實(shí)用技術(shù)淺析_第3頁(yè)
JSP基礎(chǔ)與案例開(kāi)發(fā)詳解:第9章 實(shí)用技術(shù)淺析_第4頁(yè)
JSP基礎(chǔ)與案例開(kāi)發(fā)詳解:第9章 實(shí)用技術(shù)淺析_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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第9章 實(shí)用技術(shù)淺析學(xué)前提示雖然對(duì)于不同的用戶可能需求不一樣,但根據(jù)作者多年工作經(jīng)驗(yàn)的積累,發(fā)現(xiàn)剛?cè)腴T的讀者通常需要解決中文亂碼、文件的上傳下載、驗(yàn)證碼效果的實(shí)現(xiàn)、水印圖片效果的實(shí)現(xiàn)、DAO設(shè)計(jì)模式的實(shí)現(xiàn)等問(wèn)題。本章將圍繞這些內(nèi)容展開(kāi)敘述。知識(shí)要點(diǎn)徹底解決中文亂碼問(wèn)題文件上傳功能的實(shí)現(xiàn)驗(yàn)證碼功能的實(shí)現(xiàn)水印圖片效果的實(shí)現(xiàn)DAO設(shè)計(jì)模式的理解29.1徹底解決中文亂碼問(wèn)題1.熟悉編碼格式(1) ISO8859-1(2) GB2312/GBK(3) Unicode(4) UTF-82.熟悉Web應(yīng)用程序中與編碼相關(guān)的部分(1) JSP編譯(2) JSP輸出(3) META設(shè)置(4) form設(shè)置39.1徹底解決中文亂碼問(wèn)題3.熟悉Web應(yīng)用程序亂碼產(chǎn)生的原因(1) JSP頁(yè)面被編譯為class時(shí),如果未指定字符集,默認(rèn)使用ISO8859-1的編碼格式,這樣中文會(huì)出現(xiàn)亂碼。(2) 使用表單時(shí)如果設(shè)定提交方式為POST而沒(méi)有設(shè)置提交的編碼格式,則會(huì)以ISO8859-1方式進(jìn)行提交,而接受的JSP卻以UTF-8的方式接受,這樣也會(huì)導(dǎo)致亂碼。(3) 表單使用時(shí)如果設(shè)定提交方式為GET而沒(méi)有設(shè)置提交的編碼格式,Tomcat會(huì)以GET的默認(rèn)編碼方式ISO8859-1對(duì)漢字進(jìn)行編碼,編碼后追加到URL,導(dǎo)致接收頁(yè)面得到的參數(shù)為亂碼。49.1徹底解決中文亂碼問(wèn)題4.解決亂碼(1) 設(shè)置文件本身的編碼格式。這可以在Eclipse或MyEclipse中設(shè)置。執(zhí)行Window→Preferences菜單命令,在彈出的對(duì)話框中按照?qǐng)D9.1進(jìn)行設(shè)置即可。(2) 在JSP頁(yè)面上指定字符集。通常頁(yè)面字符集的設(shè)置如下所示:參見(jiàn)教材P308(3) 數(shù)據(jù)庫(kù)連接時(shí)指定的字符集。(4) 在程序獲取頁(yè)面數(shù)據(jù)時(shí)使用如下代碼:response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");59.2文件上傳功能的實(shí)現(xiàn) 在許多Web站點(diǎn)應(yīng)用中都需要為用戶提供通過(guò)瀏覽器上傳文檔資料的功能,例如,上傳郵件附件、個(gè)人相片、共享資料等。對(duì)文件上傳功能,在瀏覽器端提供了較好的支持,只要將FORM表單的enctype屬性設(shè)置為“multipart/form-data”即可;但在Web服務(wù)器端如何獲取瀏覽器上傳的文件,需要進(jìn)行復(fù)雜的編程處理。為了簡(jiǎn)化和幫助Web開(kāi)發(fā)人員接收瀏覽器上傳的文件,一些公司和組織專門開(kāi)發(fā)了文件上傳組件,例如JspSmart公司的JspSmartUpload組件、O’Reilly公司的Cos組件。本章將詳細(xì)介紹Apache組織的文件上傳組件CommonsFileUpload的使用。69.2.1下載CommonsFileUploadCommonsFileUpload是Apache組織下一個(gè)開(kāi)源的文件上傳組件,可以直接在Apache官方網(wǎng)站下載,下載地址是/fileupload/download_fileupload.cgi,如圖9.2所示。CommonsFileUpload組件實(shí)現(xiàn)文件的上傳它還需要依賴于CommonsIO組件,Commons就是一個(gè)處理I/O流的工具類包,能讓我們很方便地實(shí)現(xiàn)文件的讀寫(xiě)操作。CommonsIO組件也屬于Apache組織下的開(kāi)源組件,可以通過(guò)地址/io/直接下載,如圖9.3所示。79.2.2CommonsFileUploadAPI介紹1.DiskFileUpload類(1) setSizeMax方法(2) setSizeThreshold方法(3) setRepositoryPath方法(4) parseRequest方法(5) isMultipartContent方法2.FileItem類(1) booleanisFormField()方法(2) StringgetName()方法(3) StringgetFieldName()方法(4) voidwrite(Filefile)方法(5) StringgetString()方法(6) StringgetContentType()方法(7) booleanisInMemory()方法(8) voiddelete()方法(9) InputStreamgetInputStream()方法(10) longgetSize()方法89.2.3CommonsFileUpload上傳示例在index.jsp頁(yè)面添加代碼,該頁(yè)面如圖9.5所示。index.jsp頁(yè)面的代碼清單如下所示:參見(jiàn)教材P31399.2.3CommonsFileUpload上傳示例在項(xiàng)目中添加commons-fileupload所需的JAR包,新創(chuàng)建Servlet名為FileUploadServlet,代碼清單如下所示:參見(jiàn)教材P314在項(xiàng)目的WebRoot目錄下新創(chuàng)建一個(gè)用來(lái)保存上傳文件的目錄,叫作files,然后把項(xiàng)目加載到Tomcat容器下并啟動(dòng),文件上傳成功,如圖9.6所示。109.2.3CommonsFileUpload上傳示例在MyEclipse的Servers視圖中展開(kāi)Tomcat,選中項(xiàng)目,右擊,從彈出的快捷菜單中選擇Browsedeploymentlocation命令,如圖9.7所示。在打開(kāi)的目錄中打開(kāi)files文件夾,便可看到已經(jīng)上傳文件的存在,如圖9.8所示。119.3驗(yàn)證碼功能的實(shí)現(xiàn)驗(yàn)證碼就是每次訪問(wèn)頁(yè)面時(shí)隨機(jī)生成的一張圖片,圖片的內(nèi)容一般是數(shù)字、字母或漢字的隨機(jī)組合,需要訪問(wèn)者把圖中的內(nèi)容識(shí)別出來(lái)并填寫(xiě)到表單中提交,如果填寫(xiě)的內(nèi)容與圖片中的內(nèi)容不一致,就拒絕提交表單,這樣就有效地防止了垃圾數(shù)據(jù)的產(chǎn)生。所以在論壇或留言板中可以看到驗(yàn)證碼的存在,它能防止惡意灌水、廣告帖等。Java也提供了繪制圖片的功能類,在了解數(shù)字驗(yàn)證碼、數(shù)字與英文混合驗(yàn)證碼、中文驗(yàn)證碼之前,先學(xué)習(xí)在Java中圖片的生成原理。129.3.1圖片生成原理1.Graphics類或BufferedImage類的介紹(1) Graphics類(2) BufferedImage類2.在Java環(huán)境下繪制圖片(1) 設(shè)置頁(yè)面類型(2) 繪制動(dòng)態(tài)圖像(3) 設(shè)置返回圖片編碼類型139.3.2JSP版數(shù)字驗(yàn)證碼在生成驗(yàn)證碼圖片的時(shí)候,就會(huì)同時(shí)生成一個(gè)Session,其值就是驗(yàn)證碼圖片中的數(shù)字值。同時(shí),提供輸入框讓用戶輸入,提交輸入值后,與已有的Session值進(jìn)行比較,根據(jù)比較結(jié)果做相應(yīng)的判斷。數(shù)字驗(yàn)證碼的效果如圖9.11所示。149.3.2JSP版數(shù)字驗(yàn)證碼1.編寫(xiě)放置驗(yàn)證碼的頁(yè)面2.編寫(xiě)產(chǎn)生驗(yàn)證碼的頁(yè)面159.3.3JSP版英文與數(shù)字混合驗(yàn)證碼數(shù)字與英文混合生成驗(yàn)證碼的方式是較適用的方式之一。數(shù)字與英文混合生成驗(yàn)證碼的效果如圖9.12所示。頁(yè)面實(shí)現(xiàn)的主要代碼如下:參見(jiàn)教材P323生成數(shù)字與英文混合驗(yàn)證碼的代碼如下:參見(jiàn)教材P323169.3.4JSP版中文驗(yàn)證碼現(xiàn)在一些網(wǎng)站上也出現(xiàn)了中文樣式的驗(yàn)證碼,頁(yè)面效果如圖9.13所示。因?yàn)橹形牡淖R(shí)別效果最佳,所以深受客戶歡迎,下面就來(lái)探討一下中文驗(yàn)證碼的產(chǎn)生過(guò)程。頁(yè)面主要代碼如下:參見(jiàn)教材P325生成中文驗(yàn)證碼的代碼如下:參見(jiàn)教材P325179.3.5JSP版表達(dá)式驗(yàn)證碼用戶需要識(shí)別出圖片上的表達(dá)式,并計(jì)算出結(jié)果,填寫(xiě)在相應(yīng)的輸入框中,輸入結(jié)果與運(yùn)算結(jié)果相符時(shí)方可提交數(shù)據(jù)。頁(yè)面效果如圖9.14所示。Login.jsp頁(yè)面的代碼清單如下:參見(jiàn)教材P327numimg.jsp頁(yè)面的代碼清單如下:參見(jiàn)教材P327189.4水印圖片效果的實(shí)現(xiàn)實(shí)現(xiàn)水印的效果需要用到ImageIO類,其靜態(tài)方法可以執(zhí)行許多常見(jiàn)的圖像I/O操作。imageio包含一些基本類和接口,有的用來(lái)描述圖像文件內(nèi)容(包括元數(shù)據(jù)和縮略圖)(IIOImage);有的用來(lái)控制圖像的讀取過(guò)程(ImageReader、ImageReadParam和ImageType-Specifier)和控制圖像寫(xiě)入過(guò)程(ImageWriter和ImageWriteParam);還有的用來(lái)執(zhí)行格式之間的代碼轉(zhuǎn)換(ImageTranscoder)和報(bào)告錯(cuò)誤(IIOException)。199.4水印圖片效果的實(shí)現(xiàn)在實(shí)現(xiàn)水印效果之前,先看看源圖片,如圖9.15所示。在圖片上添加水印效果的功能代碼如下:參見(jiàn)教材P329209.4水印圖片效果的實(shí)現(xiàn)如果無(wú)法找到所要求樣式的外觀,則字體系統(tǒng)可以應(yīng)用樣式設(shè)計(jì)算法來(lái)獲得所需的樣式。例如,如果要求ITALIC,但是沒(méi)有可用的斜體外觀,則可以通過(guò)算法使普通外觀傾斜。舉例:Fontf=newFont("宋體",Font.BOLD,20);Fontf=newFont("隸書(shū)",Font.BOLD+Font.ITALIC,20); 運(yùn)行以上代碼,產(chǎn)生的水印文字與水印圖片如圖9.16所示。219.5DAO設(shè)計(jì)模式的理解數(shù)據(jù)庫(kù)是比較穩(wěn)定的,其中DAO組件依賴于數(shù)據(jù)庫(kù)系統(tǒng),提供數(shù)據(jù)庫(kù)訪問(wèn)的接口。這樣可以使業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)的訪問(wèn)操作各盡其職。一般的DAO的封裝有以下兩個(gè)原則:一個(gè)表對(duì)應(yīng)一個(gè)表,相應(yīng)地封裝一個(gè)DAO類。對(duì)于DAO接口,必須有具體的類型定義。這樣可以避免被錯(cuò)誤地調(diào)用。DAO模式很好地將業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)訪問(wèn)操作相分離,使業(yè)務(wù)邏輯層無(wú)須關(guān)注底層數(shù)據(jù)庫(kù)的操作。DAO模式通過(guò)對(duì)底層數(shù)據(jù)的封裝,為業(yè)務(wù)層提供一個(gè)面向?qū)ο蟮慕涌?,使得業(yè)務(wù)邏輯開(kāi)發(fā)員可以面向業(yè)務(wù)中的實(shí)體進(jìn)行編碼。229.5DAO設(shè)計(jì)模式的理解在增、刪、改、查的實(shí)例代碼中,原本是使用Manage類將數(shù)據(jù)持久化到數(shù)據(jù)層,根據(jù)DAO模式的理解,現(xiàn)在將該類進(jìn)行修改,修改后的代碼清單如下所示:參見(jiàn)教材P334現(xiàn)在需要做的是,創(chuàng)建一個(gè)包,用于保存DAO接口,再創(chuàng)建一個(gè)包,用于保存DAO接口的實(shí)現(xiàn)類,如圖

溫馨提示

  • 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)論