




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1第9章 實用技術淺析學前提示雖然對于不同的用戶可能需求不一樣,但根據作者多年工作經驗的積累,發現剛入門的讀者通常需要解決中文亂碼、文件的上傳下載、驗證碼效果的實現、水印圖片效果的實現、DAO設計模式的實現等問題。本章將圍繞這些內容展開敘述。知識要點徹底解決中文亂碼問題文件上傳功能的實現驗證碼功能的實現水印圖片效果的實現DAO設計模式的理解29.1徹底解決中文亂碼問題1.熟悉編碼格式(1) ISO8859-1(2) GB2312/GBK(3) Unicode(4) UTF-82.熟悉Web應用程序中與編碼相關的部分(1) JSP編譯(2) JSP輸出(3) META設置(4) form設置39.1徹底解決中文亂碼問題3.熟悉Web應用程序亂碼產生的原因(1) JSP頁面被編譯為class時,如果未指定字符集,默認使用ISO8859-1的編碼格式,這樣中文會出現亂碼。(2) 使用表單時如果設定提交方式為POST而沒有設置提交的編碼格式,則會以ISO8859-1方式進行提交,而接受的JSP卻以UTF-8的方式接受,這樣也會導致亂碼。(3) 表單使用時如果設定提交方式為GET而沒有設置提交的編碼格式,Tomcat會以GET的默認編碼方式ISO8859-1對漢字進行編碼,編碼后追加到URL,導致接收頁面得到的參數為亂碼。49.1徹底解決中文亂碼問題4.解決亂碼(1) 設置文件本身的編碼格式。這可以在Eclipse或MyEclipse中設置。執行Window→Preferences菜單命令,在彈出的對話框中按照圖9.1進行設置即可。(2) 在JSP頁面上指定字符集。通常頁面字符集的設置如下所示:參見教材P308(3) 數據庫連接時指定的字符集。(4) 在程序獲取頁面數據時使用如下代碼:response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");59.2文件上傳功能的實現 在許多Web站點應用中都需要為用戶提供通過瀏覽器上傳文檔資料的功能,例如,上傳郵件附件、個人相片、共享資料等。對文件上傳功能,在瀏覽器端提供了較好的支持,只要將FORM表單的enctype屬性設置為“multipart/form-data”即可;但在Web服務器端如何獲取瀏覽器上傳的文件,需要進行復雜的編程處理。為了簡化和幫助Web開發人員接收瀏覽器上傳的文件,一些公司和組織專門開發了文件上傳組件,例如JspSmart公司的JspSmartUpload組件、O’Reilly公司的Cos組件。本章將詳細介紹Apache組織的文件上傳組件CommonsFileUpload的使用。69.2.1下載CommonsFileUploadCommonsFileUpload是Apache組織下一個開源的文件上傳組件,可以直接在Apache官方網站下載,下載地址是/fileupload/download_fileupload.cgi,如圖9.2所示。CommonsFileUpload組件實現文件的上傳它還需要依賴于CommonsIO組件,Commons就是一個處理I/O流的工具類包,能讓我們很方便地實現文件的讀寫操作。CommonsIO組件也屬于Apache組織下的開源組件,可以通過地址/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頁面添加代碼,該頁面如圖9.5所示。index.jsp頁面的代碼清單如下所示:參見教材P31399.2.3CommonsFileUpload上傳示例在項目中添加commons-fileupload所需的JAR包,新創建Servlet名為FileUploadServlet,代碼清單如下所示:參見教材P314在項目的WebRoot目錄下新創建一個用來保存上傳文件的目錄,叫作files,然后把項目加載到Tomcat容器下并啟動,文件上傳成功,如圖9.6所示。109.2.3CommonsFileUpload上傳示例在MyEclipse的Servers視圖中展開Tomcat,選中項目,右擊,從彈出的快捷菜單中選擇Browsedeploymentlocation命令,如圖9.7所示。在打開的目錄中打開files文件夾,便可看到已經上傳文件的存在,如圖9.8所示。119.3驗證碼功能的實現驗證碼就是每次訪問頁面時隨機生成的一張圖片,圖片的內容一般是數字、字母或漢字的隨機組合,需要訪問者把圖中的內容識別出來并填寫到表單中提交,如果填寫的內容與圖片中的內容不一致,就拒絕提交表單,這樣就有效地防止了垃圾數據的產生。所以在論壇或留言板中可以看到驗證碼的存在,它能防止惡意灌水、廣告帖等。Java也提供了繪制圖片的功能類,在了解數字驗證碼、數字與英文混合驗證碼、中文驗證碼之前,先學習在Java中圖片的生成原理。129.3.1圖片生成原理1.Graphics類或BufferedImage類的介紹(1) Graphics類(2) BufferedImage類2.在Java環境下繪制圖片(1) 設置頁面類型(2) 繪制動態圖像(3) 設置返回圖片編碼類型139.3.2JSP版數字驗證碼在生成驗證碼圖片的時候,就會同時生成一個Session,其值就是驗證碼圖片中的數字值。同時,提供輸入框讓用戶輸入,提交輸入值后,與已有的Session值進行比較,根據比較結果做相應的判斷。數字驗證碼的效果如圖9.11所示。149.3.2JSP版數字驗證碼1.編寫放置驗證碼的頁面2.編寫產生驗證碼的頁面159.3.3JSP版英文與數字混合驗證碼數字與英文混合生成驗證碼的方式是較適用的方式之一。數字與英文混合生成驗證碼的效果如圖9.12所示。頁面實現的主要代碼如下:參見教材P323生成數字與英文混合驗證碼的代碼如下:參見教材P323169.3.4JSP版中文驗證碼現在一些網站上也出現了中文樣式的驗證碼,頁面效果如圖9.13所示。因為中文的識別效果最佳,所以深受客戶歡迎,下面就來探討一下中文驗證碼的產生過程。頁面主要代碼如下:參見教材P325生成中文驗證碼的代碼如下:參見教材P325179.3.5JSP版表達式驗證碼用戶需要識別出圖片上的表達式,并計算出結果,填寫在相應的輸入框中,輸入結果與運算結果相符時方可提交數據。頁面效果如圖9.14所示。Login.jsp頁面的代碼清單如下:參見教材P327numimg.jsp頁面的代碼清單如下:參見教材P327189.4水印圖片效果的實現實現水印的效果需要用到ImageIO類,其靜態方法可以執行許多常見的圖像I/O操作。imageio包含一些基本類和接口,有的用來描述圖像文件內容(包括元數據和縮略圖)(IIOImage);有的用來控制圖像的讀取過程(ImageReader、ImageReadParam和ImageType-Specifier)和控制圖像寫入過程(ImageWriter和ImageWriteParam);還有的用來執行格式之間的代碼轉換(ImageTranscoder)和報告錯誤(IIOException)。199.4水印圖片效果的實現在實現水印效果之前,先看看源圖片,如圖9.15所示。在圖片上添加水印效果的功能代碼如下:參見教材P329209.4水印圖片效果的實現如果無法找到所要求樣式的外觀,則字體系統可以應用樣式設計算法來獲得所需的樣式。例如,如果要求ITALIC,但是沒有可用的斜體外觀,則可以通過算法使普通外觀傾斜。舉例:Fontf=newFont("宋體",Font.BOLD,20);Fontf=newFont("隸書",Font.BOLD+Font.ITALIC,20); 運行以上代碼,產生的水印文字與水印圖片如圖9.16所示。219.5DAO設計模式的理解數據庫是比較穩定的,其中DAO組件依賴于數據庫系統,提供數據庫訪問的接口。這樣可以使業務邏輯與數據庫的訪問操作各盡其職。一般的DAO的封裝有以下兩個原則:一個表對應一個表,相應地封裝一個DAO類。對于DAO接口,必須有具體的類型定義。這樣可以避免被錯誤地調用。DAO模式很好地將業務邏輯與數據庫訪問操作相分離,使業務邏輯層無須關注底層數據庫的操作。DAO模式通過對底層數據的封裝,為業務層提供一個面向對象的接口,使得業務邏輯開發員可以面向業務中的實體進行編碼。229.5DAO設計模式的理解在增、刪、改、查的實例代碼中,原本是使用Manage類將數據持久化到數據層,根據DAO模式的理解,現在將該類進行修改,修改后的代碼清單如下所示:參見教材P334現在需要做的是,創建一個包,用于保存DAO接口,再創建一個包,用于保存DAO接口的實現類,如圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論