《JSP過濾器》PPT課件.ppt
《《JSP過濾器》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《JSP過濾器》PPT課件.ppt(38頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、servlet過濾器與servlet監(jiān)聽器,1、servlet過濾器 2、 servlet監(jiān)聽器,1、servlet過濾器,1.1、什么是servlet過濾器 1.2、servlet過濾器的開發(fā)步驟 1.3、實(shí)例 1.4、servlet過濾器的深入使用,1.1、什么是jsp監(jiān)聽器,servlet 過濾器( Filter )是小型的 Web 組件,它們攔截請求和響應(yīng),以便查看、提取或以某種方式操作正在客戶機(jī)和服務(wù)器之間交換的數(shù)據(jù)。 實(shí)現(xiàn)過濾器只須在web.xml中設(shè)定相關(guān)設(shè)定,不需要修改Servlet、JSP和其他靜態(tài)頁面。因此開發(fā)者可以輕易的加入Filter機(jī)制。,過濾器是通常封裝了一些功能的
2、 Web 組件,這些功能雖然很重要,但是對于處理客戶機(jī)請求或發(fā)送響應(yīng)來說不是決定性的。 過濾器在Web開發(fā)中的一些主要應(yīng)用: 對用戶請求進(jìn)行統(tǒng)一認(rèn)證。 對用戶的訪問請求進(jìn)行記錄和審核。 對用戶發(fā)送的數(shù)據(jù)進(jìn)行過濾或替換。 轉(zhuǎn)換圖象格式。 對響應(yīng)內(nèi)容進(jìn)行壓縮,減少傳輸量。 對請求或響應(yīng)進(jìn)行加解密處理 觸發(fā)資源訪問是事件。,1.2、servlet過濾器的開發(fā)步驟,開發(fā)Servlet過濾器的步驟如下: 1.2.1 編寫實(shí)現(xiàn)Filter接口的Servlet類。 1.2.2 在web.xml中配置Filter。,1.2.1 編寫實(shí)現(xiàn)Filter接口的Servlet類,開發(fā)一個(gè)過濾器需要實(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 具體過濾處理代碼。 (3)public void destroy() 由Web容器調(diào)用,在過濾器被銷毀之前調(diào)用。
4、,,doFilter(): 與 servlet 擁有一個(gè) service() 方法(這個(gè)方法又調(diào)用 doPost() 或者 doGet() )來處理請求一樣,過濾器擁有單個(gè)用于處理請求和響應(yīng)的方法doFilter() 。 這個(gè)方法接受三個(gè)輸入?yún)?shù):一個(gè) ServletRequest 、 ServletResponse和一個(gè) FilterChain 對象。,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); //以上是請求資源之前進(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í)例一 記錄所有用戶訪問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請求字符編碼的過濾器,通過過濾器參數(shù)encoding指明使用何種字符編碼,用于處理HtmlForm請求參數(shù)的中文問題,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過濾器“IPFilter.java”,它可以過濾用戶的IP地址,以進(jìn)行訪問控制。,(1)源代碼 public class IPFilter implements Filter protected FilterConfig filterConfig; protected String filterIP;//需要過濾的IP地址 /*初始化過濾器*/ public void
14、init(FilterConfig config) throws ServletException this.filterConfig=config; filterIP=config.getInitParameter(filterIP); //獲取被過濾的IP地址 if(filterIP==null)filterIP=; ,/*過濾操作*/ 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地址被過濾,將轉(zhuǎn)向錯(cuò)誤頁面 reqDispatcher.forward(reg, res); else //否則將請求轉(zhuǎn)發(fā)給過濾器鏈中的其他資源 chain.doFilter(reg, res); /*銷毀過濾器*/ public void destroy() th
16、is.filterConfig=null; ,(2)在web.xml文件中配置IPFilter過濾器,在配置文件中定義了一個(gè)名為filterIP的參數(shù),它的值為192.168.70.82,表示IP地址為192.168.70.82的用戶將被拒絕訪問。在web.xml文件中配置過濾器如下: IPFilter sunyang.IPFilter filterIP 192.168.70.82 IPFilter /* ,(3)建立測試IPFilter過濾器的JSP頁面“success.jsp”和“error.jsp”。, 歡迎頁面 歡迎 , 拒絕訪問 對不起,您的IP地址
17、禁止訪問該網(wǎng)站 ,success.jsp,error.jsp,,,1.4、servlet過濾器的深入使用,1.4.1 servlet的串聯(lián) 1.4.2 2.4版本下的servlet,2 Servlet監(jiān)聽器,2.1 Servlet監(jiān)聽器工作原理 2.2 Servlet監(jiān)聽器類型 2.3 應(yīng)用實(shí)例,2.1 Servlet監(jiān)聽器原理,Servlet監(jiān)聽器是Web應(yīng)用程序事件模型的一部分,當(dāng)Web應(yīng)用中的某些狀態(tài)發(fā)生改變時(shí),Servlet容器就會(huì)產(chǎn)生相應(yīng)的事件,比如創(chuàng)建ServletContext對象時(shí)觸發(fā)ServletContextEvent事件,創(chuàng)建HttpSession對象時(shí)觸發(fā)HttpSes
18、sionEvent事件,Servlet監(jiān)聽器可接收這些事件,并可以在事件發(fā)生前、發(fā)生后可以做一些必要的處理。,返回,根據(jù)監(jiān)聽對象的不同,Servlet2.4規(guī)范將Servlet監(jiān)聽器劃分為以下3種:,ServletContext事件監(jiān)聽器:用于監(jiān)聽?wèi)?yīng)用程序環(huán)境對象。 HttpSession事件監(jiān)聽器:用于監(jiān)聽用戶會(huì)話對象。 ServletRequest事件監(jiān)聽器:用于監(jiān)聽請求消息對象。,2.2 Servlet監(jiān)聽器類型,1ServletContext事件監(jiān)聽器,對ServletContext對象進(jìn)行監(jiān)聽的接口有ServletContextAttributeListener和ServletCon
19、textListener,其中ServletContextAttributeListener用于監(jiān)聽ServletContext對象中屬性的改變,包括增加屬性、刪除屬性和修改屬性。ServletContextListener用于監(jiān)聽ServletContext對象本身的改變,例如ServletContext對象的創(chuàng)建和銷毀。,ServletContext事件監(jiān)聽器中的接口和方法如表所示:,2HttpSession事件監(jiān)聽器,對會(huì)話對象進(jìn)行監(jiān)聽的接口有HttpSessionAttributeListener、HttpSessionListener、HttpSessionActivationLis
20、tener和HttpSessionBindingListener。 其中HttpSessionAttributeListener用于監(jiān)聽HttpSession對象中屬性的改變,例如屬性的增加、刪除和修改。 HttpSessionListener用于監(jiān)聽HttpSession對象的改變,例如HttpSession對象的創(chuàng)建與銷毀。 HttpSessionActivationListener用于監(jiān)聽HttpSession對象的狀態(tài),例如HttpSession對象是被激活還是被鈍化。HttpSessionBindingListener用于監(jiān)聽HttpSession對象的綁定狀態(tài),例如添加對象和移除對
21、象。,HttpSession事件監(jiān)聽器中的接口和方法如表所示:,3ServletRequest事件監(jiān)聽器,對請求消息對象進(jìn)行監(jiān)聽的接口有ServletRequestListener和ServletRequestAttributeListener, 其中ServletRequestListener用于監(jiān)聽ServletRequest對象的變化,例如ServletRequest對象的創(chuàng)建和銷毀。 ServletRequestAttributeListener用于監(jiān)聽ServletRequest對象中屬性的變化,例如屬性的增加、刪除和修改。,返回,ServletRequest事件監(jiān)聽器的接口和方法如
22、表所示:,2.3 Servlet監(jiān)聽器應(yīng)用,創(chuàng)建Servlet監(jiān)聽器OnlineListener,OnlineListener監(jiān)聽器用于監(jiān)聽網(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)聽器,相關(guān)代碼如下:,(3)創(chuàng)建JSP頁面“online.jsp”,測試OnlineListener監(jiān)聽器,代碼如下:, 使用監(jiān)聽器監(jiān)聽在線人數(shù)的例子 當(dāng)前的在線人數(shù): , sunyang.OnlineListener ,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防凍教育安全教育班會(huì)全文PPT
- 2025年寒假安全教育班會(huì)全文PPT
- 初中2025年冬季防溺水安全教育全文PPT
- 初中臘八節(jié)2024年專題PPT
- 主播直播培訓(xùn)提升人氣的方法正確的直播方式如何留住游客
- XX地區(qū)機(jī)關(guān)工委2024年度年終黨建工作總結(jié)述職匯報(bào)
- 心肺復(fù)蘇培訓(xùn)(心臟驟停的臨床表現(xiàn)與診斷)
- 我的大學(xué)生活介紹
- XX單位2024年終專題組織生活會(huì)理論學(xué)習(xí)理論學(xué)習(xí)強(qiáng)黨性凝心聚力建新功
- 2024年XX單位個(gè)人述職述廉報(bào)告
- 一文解讀2025中央經(jīng)濟(jì)工作會(huì)議精神(使社會(huì)信心有效提振經(jīng)濟(jì)明顯回升)
- 2025職業(yè)生涯規(guī)劃報(bào)告自我評估職業(yè)探索目標(biāo)設(shè)定發(fā)展策略
- 2024年度XX縣縣委書記個(gè)人述職報(bào)告及2025年工作計(jì)劃
- 寒假計(jì)劃中學(xué)生寒假計(jì)劃安排表(規(guī)劃好寒假的每個(gè)階段)
- 中央經(jīng)濟(jì)工作會(huì)議九大看點(diǎn)學(xué)思想強(qiáng)黨性重實(shí)踐建新功