《JSP過(guò)濾器》PPT課件.ppt
《《JSP過(guò)濾器》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《JSP過(guò)濾器》PPT課件.ppt(38頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、servlet過(guò)濾器與servlet監(jiān)聽(tīng)器,1、servlet過(guò)濾器 2、 servlet監(jiān)聽(tīng)器,1、servlet過(guò)濾器,1.1、什么是servlet過(guò)濾器 1.2、servlet過(guò)濾器的開(kāi)發(fā)步驟 1.3、實(shí)例 1.4、servlet過(guò)濾器的深入使用,1.1、什么是jsp監(jiān)聽(tīng)器,servlet 過(guò)濾器( Filter )是小型的 Web 組件,它們攔截請(qǐng)求和響應(yīng),以便查看、提取或以某種方式操作正在客戶機(jī)和服務(wù)器之間交換的數(shù)據(jù)。 實(shí)現(xiàn)過(guò)濾器只須在web.xml中設(shè)定相關(guān)設(shè)定,不需要修改Servlet、JSP和其他靜態(tài)頁(yè)面。因此開(kāi)發(fā)者可以輕易的加入Filter機(jī)制。,過(guò)濾器是通常封裝了一些功能的
2、 Web 組件,這些功能雖然很重要,但是對(duì)于處理客戶機(jī)請(qǐng)求或發(fā)送響應(yīng)來(lái)說(shuō)不是決定性的。 過(guò)濾器在Web開(kāi)發(fā)中的一些主要應(yīng)用: 對(duì)用戶請(qǐng)求進(jìn)行統(tǒng)一認(rèn)證。 對(duì)用戶的訪問(wèn)請(qǐng)求進(jìn)行記錄和審核。 對(duì)用戶發(fā)送的數(shù)據(jù)進(jìn)行過(guò)濾或替換。 轉(zhuǎn)換圖象格式。 對(duì)響應(yīng)內(nèi)容進(jìn)行壓縮,減少傳輸量。 對(duì)請(qǐng)求或響應(yīng)進(jìn)行加解密處理 觸發(fā)資源訪問(wèn)是事件。,1.2、servlet過(guò)濾器的開(kāi)發(fā)步驟,開(kāi)發(fā)Servlet過(guò)濾器的步驟如下: 1.2.1 編寫實(shí)現(xiàn)Filter接口的Servlet類。 1.2.2 在web.xml中配置Filter。,1.2.1 編寫實(shí)現(xiàn)Filter接口的Servlet類,開(kāi)發(fā)一個(gè)過(guò)濾器需要實(shí)現(xiàn)Filter接口
3、,F(xiàn)ilter接口定義了以下方法: (1)public void init(FilterConfig filterConfig)throws ServletException 由Web容器調(diào)用,初始化此Filter。 (2) public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws java.io.IOException,ServletException 具體過(guò)濾處理代碼。 (3)public void destroy() 由Web容器調(diào)用,在過(guò)濾器被銷毀之前調(diào)用。
4、,,doFilter(): 與 servlet 擁有一個(gè) service() 方法(這個(gè)方法又調(diào)用 doPost() 或者 doGet() )來(lái)處理請(qǐng)求一樣,過(guò)濾器擁有單個(gè)用于處理請(qǐng)求和響應(yīng)的方法doFilter() 。 這個(gè)方法接受三個(gè)輸入?yún)?shù):一個(gè) ServletRequest 、 ServletResponse和一個(gè) FilterChain 對(duì)象。,package com.wgw.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import
5、 javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class SimpleFilter implements Filter private FilterConfig filterConfig; public void init(FilterConfig config) throws ServletException this.filterConfi
6、g = config; ,public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException,ServletException System.out.println(Within SimpleFilter1:Filtering the Request...1); //以上是請(qǐng)求資源之前進(jìn)行攔截后的操作 chain.doFilter(request, response); //提交給相應(yīng)資源 //以上是響應(yīng)到客戶端之
7、前攔截后的操作 System.out .println(Within SimpleFilter1:Filtering the Response...1); public void destroy() this.filterConfig = null; ,1.2.2 在web.xml中配置Filter, filter1 com.wgw.filter.SimpleFilter1 filter1 /* ,效果,輸入網(wǎng)址http://127.0.0.1:8080/try/index.jsp,1.3、實(shí)例,實(shí)例一 記錄所有用戶訪問(wèn)try網(wǎng)站的信息。,package com.wgw.filter; im
8、port java.io.IOException; import javax.servlet.*; import java.util.*; import javax.servlet.http.*; public class SimpleFilter implements Filter private FilterConfig filterConfig; public void init(FilterConfig config) throws ServletException this.filterConfig = config; public void destroy() this.fi
9、lterConfig = null; ,public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException,ServletException HttpServletRequest req = (HttpServletRequest) request; ServletContext application = filterConfig.getServletContext(); application.log(req.getRem
10、oteHost() + tried to access + req.getRequestURL() + on + new Date() + .); chain.doFilter(request, response); ,效果,,實(shí)例二 用于設(shè)置HTTP請(qǐng)求字符編碼的過(guò)濾器,通過(guò)過(guò)濾器參數(shù)encoding指明使用何種字符編碼,用于處理HtmlForm請(qǐng)求參數(shù)的中文問(wèn)題,package com.wgw.filter; import javax.servlet.*; import java.io.IOException; public class CharacterEncodingFilter im
11、plements Filter protected FilterConfig filterConfig = null; protected String encoding = ; public void init(FilterConfig filterConfig) throws ServletException this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter(encoding); ,public void doFilter(ServletRequest servletRequest
12、, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException if(encoding != null) servletRequest.setCharacterEncoding(encoding); filterChain.doFilter(servletRequest, servletResponse); public void destroy() filterConfig = null; encoding = null; ,Web.xml Charac
13、terEncodingFilter com.wgw.filter.CharacterEncodingFilter encoding gbk CharacterEncodingFilter /* ,,實(shí)例三 創(chuàng)建Servlet過(guò)濾器“IPFilter.java”,它可以過(guò)濾用戶的IP地址,以進(jìn)行訪問(wèn)控制。,(1)源代碼 public class IPFilter implements Filter protected FilterConfig filterConfig; protected String filterIP;//需要過(guò)濾的IP地址 /*初始化過(guò)濾器*/ public void
14、init(FilterConfig config) throws ServletException this.filterConfig=config; filterIP=config.getInitParameter(filterIP); //獲取被過(guò)濾的IP地址 if(filterIP==null)filterIP=; ,/*過(guò)濾操作*/ public void doFilter(ServletRequest reg, ServletResponse res, FilterChain chain) throws IOException, ServletException Request
15、Dispatcher reqDispatcher=reg.getRequestDispatcher(error.jsp); String remoteIP=reg.getRemoteAddr();//獲取本地IP地址 if(remoteIP.equals(filterIP))//如果該IP地址被過(guò)濾,將轉(zhuǎn)向錯(cuò)誤頁(yè)面 reqDispatcher.forward(reg, res); else //否則將請(qǐng)求轉(zhuǎn)發(fā)給過(guò)濾器鏈中的其他資源 chain.doFilter(reg, res); /*銷毀過(guò)濾器*/ public void destroy() th
16、is.filterConfig=null; ,(2)在web.xml文件中配置IPFilter過(guò)濾器,在配置文件中定義了一個(gè)名為filterIP的參數(shù),它的值為192.168.70.82,表示IP地址為192.168.70.82的用戶將被拒絕訪問(wèn)。在web.xml文件中配置過(guò)濾器如下: IPFilter sunyang.IPFilter filterIP 192.168.70.82 IPFilter /* ,(3)建立測(cè)試IPFilter過(guò)濾器的JSP頁(yè)面“success.jsp”和“error.jsp”。, 歡迎頁(yè)面 歡迎 , 拒絕訪問(wèn) 對(duì)不起,您的IP地址
17、禁止訪問(wèn)該網(wǎng)站 ,success.jsp,error.jsp,,,1.4、servlet過(guò)濾器的深入使用,1.4.1 servlet的串聯(lián) 1.4.2 2.4版本下的servlet,2 Servlet監(jiān)聽(tīng)器,2.1 Servlet監(jiān)聽(tīng)器工作原理 2.2 Servlet監(jiān)聽(tīng)器類型 2.3 應(yīng)用實(shí)例,2.1 Servlet監(jiān)聽(tīng)器原理,Servlet監(jiān)聽(tīng)器是Web應(yīng)用程序事件模型的一部分,當(dāng)Web應(yīng)用中的某些狀態(tài)發(fā)生改變時(shí),Servlet容器就會(huì)產(chǎn)生相應(yīng)的事件,比如創(chuàng)建ServletContext對(duì)象時(shí)觸發(fā)ServletContextEvent事件,創(chuàng)建HttpSession對(duì)象時(shí)觸發(fā)HttpSes
18、sionEvent事件,Servlet監(jiān)聽(tīng)器可接收這些事件,并可以在事件發(fā)生前、發(fā)生后可以做一些必要的處理。,返回,根據(jù)監(jiān)聽(tīng)對(duì)象的不同,Servlet2.4規(guī)范將Servlet監(jiān)聽(tīng)器劃分為以下3種:,ServletContext事件監(jiān)聽(tīng)器:用于監(jiān)聽(tīng)?wèi)?yīng)用程序環(huán)境對(duì)象。 HttpSession事件監(jiān)聽(tīng)器:用于監(jiān)聽(tīng)用戶會(huì)話對(duì)象。 ServletRequest事件監(jiān)聽(tīng)器:用于監(jiān)聽(tīng)請(qǐng)求消息對(duì)象。,2.2 Servlet監(jiān)聽(tīng)器類型,1ServletContext事件監(jiān)聽(tīng)器,對(duì)ServletContext對(duì)象進(jìn)行監(jiān)聽(tīng)的接口有ServletContextAttributeListener和ServletCon
19、textListener,其中ServletContextAttributeListener用于監(jiān)聽(tīng)ServletContext對(duì)象中屬性的改變,包括增加屬性、刪除屬性和修改屬性。ServletContextListener用于監(jiān)聽(tīng)ServletContext對(duì)象本身的改變,例如ServletContext對(duì)象的創(chuàng)建和銷毀。,ServletContext事件監(jiān)聽(tīng)器中的接口和方法如表所示:,2HttpSession事件監(jiān)聽(tīng)器,對(duì)會(huì)話對(duì)象進(jìn)行監(jiān)聽(tīng)的接口有HttpSessionAttributeListener、HttpSessionListener、HttpSessionActivationLis
20、tener和HttpSessionBindingListener。 其中HttpSessionAttributeListener用于監(jiān)聽(tīng)HttpSession對(duì)象中屬性的改變,例如屬性的增加、刪除和修改。 HttpSessionListener用于監(jiān)聽(tīng)HttpSession對(duì)象的改變,例如HttpSession對(duì)象的創(chuàng)建與銷毀。 HttpSessionActivationListener用于監(jiān)聽(tīng)HttpSession對(duì)象的狀態(tài),例如HttpSession對(duì)象是被激活還是被鈍化。HttpSessionBindingListener用于監(jiān)聽(tīng)HttpSession對(duì)象的綁定狀態(tài),例如添加對(duì)象和移除對(duì)
21、象。,HttpSession事件監(jiān)聽(tīng)器中的接口和方法如表所示:,3ServletRequest事件監(jiān)聽(tīng)器,對(duì)請(qǐng)求消息對(duì)象進(jìn)行監(jiān)聽(tīng)的接口有ServletRequestListener和ServletRequestAttributeListener, 其中ServletRequestListener用于監(jiān)聽(tīng)ServletRequest對(duì)象的變化,例如ServletRequest對(duì)象的創(chuàng)建和銷毀。 ServletRequestAttributeListener用于監(jiān)聽(tīng)ServletRequest對(duì)象中屬性的變化,例如屬性的增加、刪除和修改。,返回,ServletRequest事件監(jiān)聽(tīng)器的接口和方法如
22、表所示:,2.3 Servlet監(jiān)聽(tīng)器應(yīng)用,創(chuàng)建Servlet監(jiān)聽(tīng)器OnlineListener,OnlineListener監(jiān)聽(tīng)器用于監(jiān)聽(tīng)網(wǎng)站的在線人數(shù),代碼如下:,,import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class OnlineListener implements HttpSessionListener private int onlineCount;//定義一個(gè)代表在線人數(shù)的變量 public OnlineListener()
23、onlineCount=0; public void sessionCreated(HttpSessionEvent sessionEvent) //會(huì)話創(chuàng)建時(shí)的處理 onlineCount++; sessionEvent.getSession().getServletContext().setAttribute(online,new Integer(onlineCount)); public void sessionDestroyed(HttpSessionEvent sessionEvent) //會(huì)話銷毀時(shí)的處理 onlineCount--; sessionEvent.getSession().getServletContext().setAttribute(online,new Integer(onlineCount)); ,(2)在web.xml文件中配置OnlineListener監(jiān)聽(tīng)器,相關(guān)代碼如下:,(3)創(chuàng)建JSP頁(yè)面“online.jsp”,測(cè)試OnlineListener監(jiān)聽(tīng)器,代碼如下:, 使用監(jiān)聽(tīng)器監(jiān)聽(tīng)在線人數(shù)的例子 當(dāng)前的在線人數(shù): , sunyang.OnlineListener ,
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)對(duì)照檢查材料范文(三篇)
- 金融工作主題黨課講稿范文(匯編)
- 鍋爐必備學(xué)習(xí)材料
- 鍋爐設(shè)備的檢修
- 主題黨課講稿:走中國(guó)特色金融發(fā)展之路加快建設(shè)金融強(qiáng)國(guó)(范文)
- 鍋爐基礎(chǔ)知識(shí):?jiǎn)t注意事項(xiàng)技術(shù)問(wèn)答題
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)“四個(gè)帶頭”對(duì)照檢查材料范文(三篇)
- 正常運(yùn)行時(shí)影響鍋爐汽溫的因素和調(diào)整方法
- 3.鍋爐檢修模擬考試復(fù)習(xí)題含答案
- 司爐作業(yè)人員模擬考試試卷含答案-2
- 3.鍋爐閥門模擬考試復(fù)習(xí)題含答案
- 某公司鍋爐安全檢查表
- 3.工業(yè)鍋爐司爐模擬考試題庫(kù)試卷含答案
- 4.司爐工考試題含答案解析
- 發(fā)電廠鍋爐的運(yùn)行監(jiān)視和調(diào)整