国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Servlet中的過(guò)濾器(攔截器)Filter與監(jiān)聽(tīng)器Listener的作用和區(qū)別
Servlet中的過(guò)濾器Filter是實(shí)現(xiàn)了javax.servlet.Filter接口的服務(wù)器端程序,主要的用途是過(guò)濾字符編碼、做一些業(yè)務(wù)邏輯判斷等。其工作原理是,只要你在web.xml文件配置好要攔截的客戶端請(qǐng)求,它都會(huì)幫你攔截到請(qǐng)求,此時(shí)你就可以對(duì)請(qǐng)求或響應(yīng)(Request、Response)統(tǒng)一設(shè)置編碼,簡(jiǎn)化操作;同時(shí)還可進(jìn)行邏輯判斷,如用戶是否已經(jīng)登陸、有沒(méi)有權(quán)限訪問(wèn)該頁(yè)面等等工作。它是隨你的web應(yīng)用啟動(dòng)而啟動(dòng)的,只初始化一次,以后就可以攔截相關(guān)請(qǐng)求,只有當(dāng)你的web應(yīng)用停止或重新部署的時(shí)候才銷毀,以下通過(guò)過(guò)濾編碼的代碼示例來(lái)了解它的使用:
   1: MyCharsetFilter.java 編碼過(guò)濾器
   2: package ...;
   3: import ...;
   4:  
   5: // 主要目的:過(guò)濾字符編碼;其次,做一些應(yīng)用邏輯判斷等.
   6: // Filter跟web應(yīng)用一起啟動(dòng)
   7: // 當(dāng)web應(yīng)用重新啟動(dòng)或銷毀時(shí),F(xiàn)ilter也被銷毀
   8: public class MyCharsetFilter implements Filter {
   9:     private FilterConfig config = null;
  10:     
  11:     public void destroy() {
  12:         System.out.println("MyCharsetFilter準(zhǔn)備銷毀...");
  13:     }
  14:  
  15:     public void doFilter(ServletRequest arg0, ServletResponse arg1,
  16:             FilterChain chain) throws IOException, ServletException {
  17:         // 強(qiáng)制類型轉(zhuǎn)換
  18:         HttpServletRequest request = (HttpServletRequest)arg0;
  19:         HttpServletResponse response = (HttpServletResponse)arg1;
  20:         // 獲取web.xm設(shè)置的編碼集,設(shè)置到Request、Response中
  21:         request.setCharacterEncoding(config.getInitParameter("charset"));
  22:         response.setContentType(config.getInitParameter("contentType"));
  23:         response.setCharacterEncoding(config.getInitParameter("charset"));
  24:         
  25:         // 將請(qǐng)求轉(zhuǎn)發(fā)到目的地
  26:         chain.doFilter(request, response);
  27:     }
  28:  
  29:     public void init(FilterConfig arg0) throws ServletException {
  30:         this.config = arg0;
  31:         System.out.println("MyCharsetFilter初始化...");
  32:     }
  33: }

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

   1: <filter>
   2:       <filter-name>filter</filter-name>
   3:       <filter-class>dc.gz.filters.MyCharsetFilter</filter-class>
   4:       <init-param>
   5:           <param-name>charset</param-name>
   6:           <param-value>UTF-8</param-value>
   7:       </init-param>
   8:       <init-param>
   9:           <param-name>contentType</param-name>
  10:           <param-value>text/html;charset=UTF-8</param-value>
  11:       </init-param>
  12:   </filter>
  13:   <filter-mapping>
  14:       <filter-name>filter</filter-name>
  15:       <!-- * 代表截獲所有的請(qǐng)求  或指定請(qǐng)求/test.do  /xxx.do -->
  16:       <url-pattern>/*</url-pattern>
  17:   </filter-mapping>

     以上的例子簡(jiǎn)單的說(shuō)明了Filter的使用,具體其他的應(yīng)用可以看具體的場(chǎng)景。

         現(xiàn)在來(lái)說(shuō)說(shuō)Servlet的監(jiān)聽(tīng)器Listener,它是實(shí)現(xiàn)了javax.servlet.ServletContextListener 接口的服務(wù)器端程序,它也是隨web應(yīng)用的啟動(dòng)而啟動(dòng),只初始化一次,隨web應(yīng)用的停止而銷毀。主要作用是: 做一些初始化的內(nèi)容添加工作、設(shè)置一些基本的內(nèi)容、比如一些參數(shù)或者是一些固定的對(duì)象等等。下面利用監(jiān)聽(tīng)器對(duì)數(shù)據(jù)庫(kù)連接池DataSource的初始化演示它的使用:

   1: MyServletContextListener.java
   2: package dc.gz.listeners;
   3: import javax.servlet.ServletContext;
   4: import javax.servlet.ServletContextEvent;
   5: import javax.servlet.ServletContextListener;
   6: import org.apache.commons.dbcp.BasicDataSource;
   7:  
   8: /**
   9:  * Web應(yīng)用監(jiān)聽(tīng)器
  10:  */
  11: public class MyServletContextListener implements ServletContextListener {
  12:  
  13:     // 應(yīng)用監(jiān)聽(tīng)器的銷毀方法
  14:     public void contextDestroyed(ServletContextEvent event) {
  15:         ServletContext sc = event.getServletContext();
  16:         // 在整個(gè)web應(yīng)用銷毀之前調(diào)用,將所有應(yīng)用空間所設(shè)置的內(nèi)容清空
  17:         sc.removeAttribute("dataSource");
  18:         System.out.println("銷毀工作完成...");
  19:     }
  20:  
  21:     // 應(yīng)用監(jiān)聽(tīng)器的初始化方法
  22:     public void contextInitialized(ServletContextEvent event) {
  23:         // 通過(guò)這個(gè)事件可以獲取整個(gè)應(yīng)用的空間
  24:         // 在整個(gè)web應(yīng)用下面啟動(dòng)的時(shí)候做一些初始化的內(nèi)容添加工作
  25:         ServletContext sc = event.getServletContext();
  26:         // 設(shè)置一些基本的內(nèi)容;比如一些參數(shù)或者是一些固定的對(duì)象
  27:         // 創(chuàng)建DataSource對(duì)象,連接池技術(shù) dbcp
  28:         BasicDataSource bds = new BasicDataSource();
  29:         bds.setDriverClassName("com.mysql.jdbc.Driver");
  30:         bds.setUrl("jdbc:mysql://localhost:3306/hibernate");
  31:         bds.setUsername("root");
  32:         bds.setPassword("root");
  33:         bds.setMaxActive(10);//最大連接數(shù)
  34:         bds.setMaxIdle(5);//最大管理數(shù)
  35:         //bds.setMaxWait(maxWait); 最大等待時(shí)間
  36:         // 把 DataSource 放入ServletContext空間中,
  37:         // 供整個(gè)web應(yīng)用的使用(獲取數(shù)據(jù)庫(kù)連接)
  38:         sc.setAttribute("dataSource", bds);
  39:         System.out.println("應(yīng)用監(jiān)聽(tīng)器初始化工作完成...");
  40:         System.out.println("已經(jīng)創(chuàng)建DataSource...");
  41:     }
  42: }

web.xml中配置如下,很簡(jiǎn)單:

   1: <!-- 配置應(yīng)用監(jiān)聽(tīng)器  -->
   2:   <listener>
   3:       <listener-class>dc.gz.listeners.MyServletContextListener</listener-class>
   4:   </listener>

這樣配置好了之后,以后在web應(yīng)用中就可以通過(guò)ServletContext取得BasicDataSource對(duì)象,從而獲取與數(shù)據(jù)庫(kù)的連接,提高性能,方便使用。

          上面通過(guò)兩個(gè)示例演示了Filter和Listener的基本使用,對(duì)于其它的應(yīng)用則需要我們?cè)陧?xiàng)目開(kāi)發(fā)中根據(jù)具體的場(chǎng)景選擇。多多去挖掘。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
過(guò)濾器、監(jiān)聽(tīng)器
寶寶 javaweb 學(xué)習(xí)總結(jié)
(四)spring+servlet 整合
Servlet過(guò)濾器和監(jiān)聽(tīng)器知識(shí)總結(jié)
Spring MVC 入門
Servlet總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服