資源描述:
《J2EE企業(yè)級(jí)軟件開(kāi)發(fā)之:Web應(yīng)用開(kāi)發(fā)常見(jiàn)問(wèn)題.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、JavaEE企業(yè)級(jí)軟件開(kāi)發(fā)Web應(yīng)用開(kāi)發(fā)常見(jiàn)問(wèn)題2014洛陽(yáng)師范學(xué)院呂延慶本節(jié)內(nèi)容提綱中文問(wèn)題文件上傳文件下載JFreeChart圖表開(kāi)發(fā)分頁(yè)顯示國(guó)際化部署中文問(wèn)題產(chǎn)生亂碼問(wèn)題的根本原因:編碼方案不同產(chǎn)生亂碼的各種情況:從JSP頁(yè)面的表單提交數(shù)據(jù)?Java程序(如Servlet)從Java程序(如Servlet)?跳轉(zhuǎn)到JSP頁(yè)面顯示從數(shù)據(jù)庫(kù)?Java程序(如DAO層代碼)讀取從Java程序(如DAO層代碼)?數(shù)據(jù)庫(kù)存儲(chǔ)從其他類型文件?Java程序讀取從Java程序?寫入其他類型文件常見(jiàn)字符集ASCII7位編碼,含128個(gè)常用字符GB2312含6763個(gè)漢字(缺少生僻字)GBK含210
2、03個(gè)漢字,兼容GB2312GB18030除70000多個(gè)漢字外,還有藏、蒙、彝文等,兼容GB2312和GBKUnicode有三套編碼方式,即UTF-8,UTF-16,UTF-32UTF-8網(wǎng)絡(luò)傳輸通用,英文8位,中文24位ISO8859-1又稱為L(zhǎng)atin-1,8位編碼,西歐字符,兼容ASCIIBIG-5稱為大五碼,繁體字,13060個(gè),臺(tái)港澳通用解決亂碼問(wèn)題的方式1)檢查JSP頁(yè)面或HTML頁(yè)面a)page指令的contentType屬性和pageEncoding屬性b)META標(biāo)簽的charset屬性2)在Java程序中a)request.setCharacterEncoding
3、(“字符編碼名”);b)newString(name.getBytes(“ISO8859-1”),”UTF-8”);3)數(shù)據(jù)庫(kù)連接中(以MySQL為例)a)安裝時(shí)選定默認(rèn)字符集b)JDBCurl“jdbc:mysql://localhost:3306/mytest?characterEncoding=utf-8”文件上傳jspSmartUpload組件缺點(diǎn):原有組件未能很好處理中文文件名優(yōu)點(diǎn):使用較簡(jiǎn)單ApacheFileUpload組件缺點(diǎn):使用稍復(fù)雜優(yōu)點(diǎn):適用性較好,無(wú)中文亂碼問(wèn)題文件下載jspSmartUpload組件的實(shí)現(xiàn)圖表開(kāi)發(fā)JFreeChart圖表優(yōu)點(diǎn):純Java實(shí)現(xiàn)缺點(diǎn)
4、:輸出是圖片,交互能力有限其他Web圖表實(shí)現(xiàn)JavaScript組件(如Flot)Flash組件Html5組件SVG組件JFreeChart示例分頁(yè)顯示分頁(yè)顯示的應(yīng)用場(chǎng)合JSP上用于顯示記錄數(shù)量太多,分頁(yè)能避免服務(wù)器負(fù)擔(dān)過(guò)重。分頁(yè)顯示的兩種思路一次性全部從數(shù)據(jù)庫(kù)獲取全部記錄,用Java程序?qū)崿F(xiàn)分頁(yè)減少數(shù)據(jù)庫(kù)操作,但占用Java服務(wù)器(如Tomcat)的資源用SQL語(yǔ)句實(shí)現(xiàn)分頁(yè)占用Java服務(wù)器(如Tomcat)資源少,但頻繁操作數(shù)據(jù)庫(kù)分頁(yè)顯示的思路分頁(yè)顯示時(shí),需得到以下參數(shù):總記錄數(shù):totalRecords每頁(yè)顯示記錄數(shù):recordsPerPage總頁(yè)數(shù):pageSize=tota
5、lRecords/recordsPerPage+1當(dāng)前頁(yè)碼(從1開(kāi)始計(jì)數(shù)):currentPage這里需要確定的是totalRecords(一般由數(shù)據(jù)庫(kù)查詢獲得,selectcount(*)from…)、recordsPerPage(一般在用戶選項(xiàng)中指定)、currentPage(用戶頁(yè)面輸入決定)分頁(yè)顯示用SQL實(shí)現(xiàn)以MySQL為例:select*frommytableLIMITM,N表示從滿足條件的全部記錄中,從第M條記錄開(kāi)始檢索共N條記錄。N=recordsPerPage“上一頁(yè)”的M=(currentPage-1)*recordsPerPage+1“下一頁(yè)”的M=(curren
6、tPage+1)*recordsPerPage+1國(guó)際化國(guó)際化,Internationalization(i18n)文本顯示不是硬編碼在程序中,而應(yīng)該提供獨(dú)立的資源文件與地域有關(guān)的日期、貨幣、數(shù)字化表示能根據(jù)系統(tǒng)自動(dòng)變化Java內(nèi)置了國(guó)際化支持java.util.ResourceBundlejava.util.Localejava.text.MessageFormat國(guó)際化資源文件命名的方式:基本名_語(yǔ)言名_國(guó)家名.properties例如:ApplicationResources_zh_CN.propertiesMyResource_en_US.propertiesMyResourc
7、e_fr_FR.properties資源文件轉(zhuǎn)換方法:JDK提供的native2ascii.exe國(guó)際化:native2ascii使用方式國(guó)際化示例publicclassTestI18N{publicstaticvoidmain(String[]args){LocalecurrentLocale=newLocale("zh","CN");//設(shè)定"語(yǔ)言"和"國(guó)家"ResourceBundlemessages=ResourceBundle.get