




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
過濾器:API(接口)執(zhí)行流程應(yīng)用、案例:(在servlet中重復(fù)編寫的代碼,都可以放到過濾器中完成?。┻^濾器實(shí)現(xiàn)編碼統(tǒng)一處理登陸權(quán)限驗(yàn)證目標(biāo):監(jiān)聽器國際化1. 監(jiān)聽器1.1 概述監(jiān)聽器: 主要是用來監(jiān)聽特定對象的創(chuàng)建或銷毀、屬性的變化的! 是一個實(shí)現(xiàn)特定接口的普通java類!對象:自己創(chuàng)建自己用 (不用監(jiān)聽)別人創(chuàng)建自己用 (需要監(jiān)聽)Servlet中哪些對象需要監(jiān)聽?request / session / servletContext分別對應(yīng)的是request監(jiān)聽器、session相關(guān)監(jiān)聽器、servletContext監(jiān)聽器監(jiān)聽器(listener)監(jiān)聽器接口:一、監(jiān)聽對象創(chuàng)建/銷毀的監(jiān)聽器接口Interface ServletRequestListener 監(jiān)聽request對象的創(chuàng)建或銷毀Interface HttpSessionListener 監(jiān)聽session對象的創(chuàng)建或銷毀Interface ServletContextListener 監(jiān)聽servletContext對象的創(chuàng)建或銷毀二、監(jiān)聽對象屬性的變化Interface ServletRequestAttributeListener 監(jiān)聽request對象屬性變化: 添加、移除、修改Interface HttpSessionAttributeListener 監(jiān)聽session對象屬性變化: 添加、移除、修改Interface ServletContextAttributeListener 監(jiān)聽servletContext對象屬性變化三、session相關(guān)監(jiān)聽器Interface HttpSessionBindingListener 監(jiān)聽對象綁定到session上的事件 Interface HttpSessionActivationListener(了解) 監(jiān)聽session序列化及反序列化的事件404(路徑寫錯)500(服務(wù)器錯誤,調(diào)試)1.2 生命周期監(jiān)聽器聲明周期監(jiān)聽器: 監(jiān)聽對象的創(chuàng)建、銷毀的過程!監(jiān)聽器開發(fā)步驟:1. 寫一個普通java類,實(shí)現(xiàn)相關(guān)接口;2. 配置(web.xml)A. ServletRequestListener 監(jiān)聽request對象的創(chuàng)建或銷毀。代碼:/* * 監(jiān)聽request對象的創(chuàng)建或銷毀 * author Jie.Yuan * */public class MyRequestListener implements ServletRequestListener/ 對象銷毀Overridepublic void requestDestroyed(ServletRequestEvent sre) / 獲取request中存放的數(shù)據(jù)Object obj = sre.getServletRequest().getAttribute(cn);System.out.println(obj);System.out.println(MyRequestListener.requestDestroyed();/ 對象創(chuàng)建Overridepublic void requestInitialized(ServletRequestEvent sre) System.out.println(MyRequestListener.requestInitialized();Web.xmlcn.itcast.a_life.MyRequestListenerB. HttpSessionListener監(jiān)聽session對象的創(chuàng)建或銷毀。C. ServletContextListener監(jiān)聽servletContext對象的創(chuàng)建或銷毀。1.3 屬性監(jiān)聽器監(jiān)聽:request/session/servletContext對象屬性的變化!ServletRequestAttributeListenerHttpSessionAttributeListenerServletContextAttributeListener總結(jié):先寫類,實(shí)現(xiàn)接口; 再配置1.4 其他監(jiān)聽器: session相關(guān)監(jiān)聽器HttpSessionBindingListener 監(jiān)聽對象綁定/解除綁定到sesison上的事件!步驟:對象實(shí)現(xiàn)接口; 再把對象綁定/解除綁定到session上就會觸發(fā)監(jiān)聽代碼。作用:(上線提醒!)/* * 監(jiān)聽此對象綁定到session上的過程,需要實(shí)現(xiàn)session特定接口 * author Jie.Yuan * */public class Admin implements HttpSessionBindingListener 省略get/set/ 對象放入sessionOverridepublic void valueBound(HttpSessionBindingEvent event) System.out.println(Admin對象已經(jīng)放入session);/ 對象從session中移除Overridepublic void valueUnbound(HttpSessionBindingEvent event) System.out.println(Admin對象從session中移除!);思考:這個session監(jiān)聽器,和上面的聲明周期、屬性監(jiān)聽器區(qū)別?- 不用再web.xml配置 - 因?yàn)楸O(jiān)聽的對象是自己創(chuàng)建的對象,不是服務(wù)器對象!1.4 案例需求:做一個在線列表提醒的功能! 用戶- 登陸 - 顯示登陸信息,列表展示。(list.jsp) - 顯示在線用戶列表 (list.jsp)- 列表點(diǎn)擊進(jìn)入“在線列表頁面” onlineuser.jsp實(shí)現(xiàn):1. 先增加退出功能; 再把session活躍時間1min;2. 寫監(jiān)聽器,監(jiān)聽servletContext對象的創(chuàng)建: 初始化集合(onlineuserlist)3. 登陸功能: 用戶登陸時候,把數(shù)據(jù)保存到servletContext中4. List.jsp 增加超鏈接, 點(diǎn)擊時候提交直接跳轉(zhuǎn)到online.jsp5. 寫監(jiān)聽器: 監(jiān)聽session銷毀,把當(dāng)前登陸用戶從onlineuserlist移除!2. 國際化Javaweb增強(qiáng):過濾器、監(jiān)聽器、國際化、文件上傳下載、javaMaill 國際化又簡稱為 i18n:internationalization國際化的人:人,英語,漢語; 可以說這個人是國際化的人;軟件的國際化:軟件中國: 顯示中文,以及服務(wù)符合中國習(xí)慣的文本字符串! 1999-09-09美國: 顯示英文,以及服務(wù)符合他國習(xí)慣的文本字符串!這種軟件,就叫國際化的軟件!如何做到國際化的軟件,要求:1. 軟件中存儲特定的字符串2. 知道瀏覽器當(dāng)前使用哪種語言(Locale )Locale 本地化Java提供了一個本地化的對象!封裝當(dāng)前語言、國家、環(huán)境等特征!public class App Test/1. 本地化對象:Locale/ 封裝語言、國家信息的對象,有java.util提供public void testLocale() throws Exception / 模擬中國語言等環(huán)境/Locale locale = Locale.CHINA;Locale locale = Locale.getDefault();/ 當(dāng)前系統(tǒng)默認(rèn)的語言環(huán)境System.out.println(locale.getCountry(); / CN 國家的簡稱System.out.println(locale.getDisplayCountry(); / 國家名稱System.out.println(locale.getLanguage();/ zh 語言簡稱/ 模擬美國國家Locale l_us = Locale.US;System.out.println(l_us.getCountry();System.out.println(l_us.getDisplayCountry();國際化靜態(tài)數(shù)據(jù)國際化網(wǎng)站中顯示的固定文本的國際化: “用戶名”“密碼“國際化的軟件:1. 存儲所有國家顯示的文本的字符串a(chǎn)) 文件: propertiesb) 命名: 基礎(chǔ)名_語言簡稱_國家簡稱.properties例如:msg_zh_CN.properties 存儲所有中文 Msg_en_US.properties 存儲所有英文2. 程序中獲取ResourceBundle類,可以讀取國際化的資源文件!動態(tài)文本國際化中文:1987-09-19 ¥1000英文: Sep/09 1987 $100l 數(shù)值,貨幣,時間,日期等數(shù)據(jù)由于可能在程序運(yùn)行時動態(tài)產(chǎn)生,所以無法像文字一樣簡單地將它們從應(yīng)用程序中分離出來,而是需要特殊處理。Java 中提供了解決這些問題的 API 類(位于 java.util 包和 java.text 包中)/ 國際化 - 靜態(tài)數(shù)據(jù)Testpublic void testI18N() throws Exception / 中文語言環(huán)境Locale locale = Locale.US;/ 創(chuàng)建工具類對象ResourceBundleResourceBundle bundle = ResourceBundle.getBundle(cn.itcast.f_i18n.msg, locale);/ 根據(jù)key獲取配置文件中的值System.out.println(bundle.getString(hello);System.out.println(bundle.getString(username);System.out.println(bundle.getString(pwd);/ 國際化 - 動態(tài)文本 - 0. 概述Testpublic void testI18N2() throws Exception / 國際化貨幣NumberFormat.getCurrencyInstance();/ 國際化數(shù)字NumberFormat.getNumberInstance();/ 國際化百分比NumberFormat.getPercentInstance(); / 國際化日期/DateFormat.getDateTimeInstance(dateStyle, timeStyle, aLocale)/ 國際化 - 動態(tài)文本 - 1. 國際化貨幣Testpublic void testI18N3() throws Exception / 模擬語言環(huán)境Locale locale = Locale.CHINA;/ 數(shù)據(jù)準(zhǔn)備double number = 100;/ 工具類NumberFormat nf = NumberFormat.getCurrencyInstance(locale);/ 國際化貨幣String m = nf.format(number);/ 測試System.out.println(m);/面試題: 代碼計(jì)算: $100 * 10 Testpublic void eg() throws Exception String str = $100;int num = 10;/ 1. 分析str值是哪一國家的貨幣Locale us = Locale.US;/ 2. 國際化工具類NumberFormat nf = NumberFormat.getCurrencyInstance(us);/ 3. 解析str國幣Number n = nf.parse(str);System.out.println(Value() * num);/ 國際化 - 動態(tài)文本 - 2. 國際化數(shù)值Testpublic void testI18N4() throws Exception / 模擬語言環(huán)境Locale locale = Locale.CHINA;NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);String str = nf.format(1000000000);System.out.println(str);/ 國際化 - 動態(tài)文本 - 3. 國際化日期/* * 日期 * FULL 2015年3月4日 星期三 * LONG 2015年3月4日 * FULL 2015年3月4日 星期三 * MEDIUM 2015-3-4 * SHORT 15-3-4 * * 時間 * FULL 下午04時31分59秒 CST * LONG 下午04時32分37秒 * MEDIUM 16:33:00 * SHORT 下午4:33 * * */Testpublic void testI18N5() throws Exception / 日期格式int dateStyle = DateFormat.SHORT;/ 時間格式int timeStyle = DateFormat.SHORT;/ 工具類DateFormat df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, Locale.CHINA);String date = df.format(new Date();System.out.println(date);/ 面試2: 請將時間值:09-11-28 上午10時25分39秒 CST,反向解析成一個date對象。Testpublic void eg2() throws Exception String str = 09-11-28 上午10時25分39秒 CST;/ 創(chuàng)建DateFormat工具類,國際化日期DateFormat df = DateFormat.getDateTi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村承包堰塘合同范本3篇
- 優(yōu)化組織結(jié)構(gòu)方案3篇
- 成年兒女見證父母離婚過程3篇
- 勞動合同糾紛起訴狀2篇
- 信用社質(zhì)押借款合同范本3篇
- 公司法法律事務(wù)咨詢承諾2篇
- 年科研保密協(xié)議3篇
- 保持清潔承諾3篇
- 房產(chǎn)租賃逾期付款的情緒管理3篇
- 二手挖機(jī)求購協(xié)議3篇
- 江蘇省蘇州市2024-2025學(xué)年統(tǒng)編版(2024)第二學(xué)期七年級語文期中模擬卷(二)(含答案)
- 探討“職繼融通”研究的內(nèi)涵、框架及其未來發(fā)展趨勢
- 醫(yī)保飛行檢查培訓(xùn)
- 2025年中考英語押題預(yù)測卷(蘇州專用)(原卷版)
- CT引導(dǎo)下經(jīng)皮胃造瘺術(shù)專家共識(2025版)解讀課件
- 2024年美容師考試相關(guān)法律法規(guī)解讀試題及答案
- 2024年高考真題-地理(河北卷) 含答案
- 醫(yī)學(xué)教材 《瘧疾》課件
- 西方文論經(jīng)典導(dǎo)讀智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 中國居民膳食指南(全)
- 27.3實(shí)際問題與一元二次方程(傳播問題)
評論
0/150
提交評論