亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

淺析JAVA中過濾器、監聽器、攔截器的區別

2020-01-24 01:27:16
字體:
來源:轉載
供稿:網友

1.過濾器:所謂過濾器顧名思義是用來過濾的,在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然后再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者struts的action前統一設置字符集,或者去除掉一些非法字符(聊天室經常用到的,一些罵人的話)。filter 流程是線性的, url傳來之后,檢查之后,可保持原來的流程繼續向下執行,被下一個filter, servlet接收等.

2.監聽器:這個東西在c/s模式里面經常用到,他會對特定的事件產生產生一個處理。監聽在很多模式下用到。比如說觀察者模式,就是一個監聽來的。又比如struts可以用監聽來啟動。Servlet監聽器用于監聽一些重要事件的發生,監聽器對象可以在事情發生前、發生后可以做一些必要的處理。

3.java的攔截器 主要是用在插件上,擴展件上比如 hivernate spring struts2等 有點類似面向切片的技術,在用之前先要在配置文件即xml文件里聲明一段的那個東西。

下面通過代碼加文字說明給大家介紹java中過濾器、監聽器、攔截器的區別

1.過濾器

Servlet中的過濾器Filter是實現了javax.servlet.Filter接口的服務器端程序,主要的用途是過濾字符編 碼、做一些業務邏輯判斷等。其工作原理是,只要你在web.xml文件配置好要攔截的客戶端請求,它都會幫你攔截到請求,此時你就可以對請求或響應 (Request、Response)統一設置編碼,簡化操作;同時還可進行邏輯判斷,如用戶是否已經登陸、有沒有權限訪問該頁面等等工作。它是隨你的 web應用啟動而啟動的,只初始化一次,以后就可以攔截相關請求,只有當你的web應用停止或重新部署的時候才銷毀,以下通過過濾編碼的代碼示例來了解它 的使用:

 MyCharsetFilter.java 編碼過濾器  

package ...; import ...; // 主要目的:過濾字符編碼;其次,做一些應用邏輯判斷等. // Filter跟web應用一起啟動 // 當web應用重新啟動或銷毀時,Filter也被銷毀 public class MyCharsetFilter implements Filter {   private FilterConfig config = null;   public void destroy() {    System.out.println("MyCharsetFilter準備銷毀...");   }    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain) throws IOException, ServletException {    // 強制類型轉換    HttpServletRequest request = (HttpServletRequest)arg0;    HttpServletResponse response = (HttpServletResponse)arg1;    // 獲 取web.xm設置的編碼集,設置到Request、Response 中   request.setCharacterEncoding(config.getInitParameter("charset"));   response.setContentType(config.getInitParameter("contentType"));   response.setCharacterEncoding(config.getInitParameter("charset"));     // 將請求轉發到目的地    chain.doFilter(request, response);   }    public void init(FilterConfig arg0) throws ServletException {    this.config = arg0;    System.out.println("MyCharsetFilter初始化...");   }  } 

 以下是 MyCharsetFilter.java 在web.xml 中配置:

<filter>   <filter-name>filter</filter-name>   <filter-class>dc.gz.filters.MyCharsetFilter</filter-class>   <init-param>    <param-name>charset</param-name>    <param-value>UTF-8</param-value>   </init-param>   <init-param>    <param-name>contentType</param-name>    <param-value>text/html;charset=UTF-8</param-value>   </init-param>  </filter>  <filter-mapping>   <filter-name>filter</filter-name>   <!-- * 代表截獲所有的請求 或指定請求/test.do /xxx.do -->   <url-pattern>/*</url-pattern>  </filter-mapping>

以上的例子簡單的說明了Filter的使用,具體其他的應用可以看具體的場景。

2.監聽器

現在來說說Servlet的監聽器Listener,它是實現了javax.servlet.ServletContextListener 接口的服務器端程序,它也是隨web應用的啟動而啟動,只初始化一次,隨web應用的停止而銷毀。主要作用是: 做一些初始化的內容添加工作、設置一些基本的內容、比如一些參數或者是一些固定的對象等等。下面利用監聽器對數據庫連接池DataSource的初始化演 示它的使用:

MyServletContextListener.java  package dc.gz.listeners;  import javax.servlet.ServletContext;  import javax.servlet.ServletContextEvent;  import javax.servlet.ServletContextListener;  import org.apache.commons.dbcp.BasicDataSource;  /**  * Web應用監聽器  */  public class MyServletContextListener implements ServletContextListener {    // 應用監聽器的銷毀方法   public void contextDestroyed(ServletContextEvent event) {    ServletContext sc = event.getServletContext();    // 在整個web應用銷毀之前調用,將所有應用空間所設置的內容清空    sc.removeAttribute("dataSource");   System.out.println("銷毀工作完成...");   }   // 應用監聽器的初始化方法   public void contextInitialized(ServletContextEvent event) {    // 通過這個事件可以獲取整個應用的空間    // 在整個web應用下面啟動的時候做一些初始化的內容添加工作    ServletContext sc = event.getServletContext();    // 設置一些基本的內容;比如一些參數或者是一些固定的對象    // 創建DataSource對象,連接池技術 dbcp    BasicDataSource bds = new BasicDataSource();    bds.setDriverClassName("com.mysql.jdbc.Driver");      bds.setUrl("jdbc:mysql://localhost:3306/hibernate");    bds.setUsername("root");    bds.setPassword("root");    bds.setMaxActive(10);//最大連接數    bds.setMaxIdle(5);//最大管理數    //bds.setMaxWait(maxWait); 最大等待時間    // 把 DataSource 放入ServletContext空間中,    // 供整個web應用的使用(獲取數據庫連接)    sc.setAttribute("dataSource", bds);    System.out.println("應用監聽器初始化工作完成...");    System.out.println("已經創建DataSource...");   }  } 

 web.xml中配置如下,很簡單:

<!-- 配置應用監聽器 -->  <listener>   <listener-class>dc.gz.listeners.MyServletContextListener</listener-class>  </listener> 

這樣配置好了之后,以后在web應用中就可以通過ServletContext取得BasicDataSource對象,從而獲取與數據庫的連接,提高性能,方便使用。

3.攔截器

攔截器是在面向切面編程中應用的,就是在你的service或者一個方法前調用一個方法,或者在方法后調用一個方法。是基于JAVA的反射機制。攔截器不是在web.xml,比如struts在struts.xml中配置,

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; System.out.println("before invoke method :" + method.getName()); result = method.invoke(this.targetObj, args); System.out.println("after invoke method : " + method.getName()); return result; }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一页中文字幕| 成人乱人伦精品视频在线观看| 欧美精品免费在线观看| 91最新国产视频| 国产精品一二区| 亚洲一区中文字幕在线观看| 伊人久久久久久久久久久| 日韩美女在线看| 国产精品激情av电影在线观看| 91中文在线观看| 米奇精品一区二区三区在线观看| 国产成+人+综合+亚洲欧洲| 亚洲三级 欧美三级| 揄拍成人国产精品视频| 欧美人与性动交a欧美精品| 中文国产亚洲喷潮| 久久精品久久精品亚洲人| 成人午夜在线观看| 欧美亚洲一区在线| 日韩免费高清在线观看| 国产一区二区三区中文| 日本高清不卡在线| 亚洲人成电影网站| 青草青草久热精品视频在线观看| 亚洲一区二区精品| 97碰碰碰免费色视频| 中文字幕av一区中文字幕天堂| 日韩亚洲一区二区| 久久国产精品99国产精| 91免费的视频在线播放| 精品久久久久久亚洲精品| 国产成人小视频在线观看| 国产一区红桃视频| 国产成人亚洲综合青青| 91av国产在线| 亚洲欧美国产一区二区三区| 日韩欧美精品网站| 国产精品网址在线| 国产91|九色| 亚洲国产天堂久久国产91| 亚洲第一页在线| 一本色道久久88综合日韩精品| 亚洲国产99精品国自产| 欧美裸体xxxx| 国产精品在线看| 国产一区二区在线播放| 精品二区三区线观看| 亚洲永久在线观看| 国产精品亚洲精品| 国产精品男女猛烈高潮激情| 欧美电影在线观看| 欧美一级片久久久久久久| 91精品国产综合久久男男| 国产日韩换脸av一区在线观看| 亚洲一区二区自拍| 亚洲欧美日韩高清| 最近2019好看的中文字幕免费| 亚洲欧美精品中文字幕在线| 亚洲国产美女久久久久| 俺去了亚洲欧美日韩| 国产亚洲欧洲黄色| 成人激情在线观看| 欧美中文字幕在线视频| 日韩成人在线播放| 中文国产成人精品久久一| 国产精品久久久久久婷婷天堂| 国产精品亚洲网站| 国产成人亚洲综合91| 色悠久久久久综合先锋影音下载| 一区二区福利视频| 欧美激情国内偷拍| 国产成人高清激情视频在线观看| 国产亚洲精品久久| 国产精品吴梦梦| 国产在线一区二区三区| 亚洲精品免费av| 91久久久久久久久久久| 亚洲影视九九影院在线观看| 国产精品日韩久久久久| 国产精品视频一区二区高潮| 日韩电影免费在线观看| 久久精品国产久精国产思思| 国产一区二区三区丝袜| 欧美激情免费视频| 国产精品久久久| 亚洲自拍偷拍一区| 久久精品在线播放| 亚洲精品日韩激情在线电影| 久久视频在线播放| 18性欧美xxxⅹ性满足| 欧美巨猛xxxx猛交黑人97人| 久精品免费视频| 国产成人精品久久亚洲高清不卡| 欧美成人自拍视频| www.亚洲一二| 成人中文字幕+乱码+中文字幕| 国产久一一精品| 欧美一级bbbbb性bbbb喷潮片| 中文字幕在线观看亚洲| 91在线视频免费| 黑人巨大精品欧美一区免费视频| 亚洲电影中文字幕| 一区二区三区四区在线观看视频| xxxxxxxxx欧美| 国产成人啪精品视频免费网| 欧美在线精品免播放器视频| 91地址最新发布| 亚洲天堂av图片| 在线观看日韩www视频免费| 亚洲欧美自拍一区| 国产综合视频在线观看| 国产裸体写真av一区二区| 久久久久久久亚洲精品| 欧美怡春院一区二区三区| 日韩精品免费电影| 欧美第一淫aaasss性| 成人午夜黄色影院| 久久人人爽人人爽爽久久| 日韩精品在线免费观看| 欧美激情视频免费观看| 日本欧美精品在线| 91高清视频免费观看| 国产精品18久久久久久麻辣| 亚洲欧美在线免费观看| 亚洲欧洲激情在线| 韩国美女主播一区| 丁香五六月婷婷久久激情| 亚洲男子天堂网| 久久久亚洲欧洲日产国码aⅴ| 欧美激情欧美激情| 欧美日韩一区二区在线| 欧美日韩国产二区| 欧美激情一区二区三区在线视频观看| 欧美成aaa人片免费看| 97视频网站入口| 狠狠久久五月精品中文字幕| 国产视频在线观看一区二区| 精品日韩美女的视频高清| 亚洲欧美色图片| 久久久91精品国产一区不卡| 91精品久久久久久久久久入口| 国产精品第七影院| 亚洲精品小视频| 国产亚洲精品一区二区| 亚洲精品aⅴ中文字幕乱码| 亚洲天堂成人在线| 欧美日韩国产999| 国产精品一区二区久久精品| 欧美区在线播放| 日韩在线免费观看视频| 欧美在线观看一区二区三区| 亚洲国语精品自产拍在线观看| 精品久久久中文| 岛国av一区二区三区| 永久免费精品影视网站| 亚洲永久免费观看| 亚洲v日韩v综合v精品v| 91免费高清视频| 77777少妇光屁股久久一区| 日韩在线免费观看视频| 中文字幕亚洲一区二区三区五十路| 亚洲色图在线观看| 亚洲夜晚福利在线观看| 原创国产精品91|