轉載:http://blog.csdn.net/linxingliang/article/details/52069490
上一篇文章已經對定義Servlet 的方法進行了說明,過濾器(Filter)和 監聽器(Listener)的註冊方法和 Servlet 一樣,不清楚的可以檢視下上一篇文章(20): 本文將直接使用@WebFilter和@WebListener的方式,完成一個Filter 和一個 Listener;使用註解
@ServletComponentScan//這個就是掃描相應的Servlet包;
過濾器(Filter)檔案
com.kfit.filter.MyFilter.Java
package com.kfit.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
*
* 使用註解標註過濾器
* @WebFilter將一個實現了javax.servlet.Filter介面的類定義為過濾器
* 屬性filterName宣告過濾器的名稱,可選
* 屬性urlPatterns指定要過濾 的URL模式,也可使用屬性value來宣告.(指定要過濾的URL模式是必選屬性)
* @author Angel(QQ:412887952)
* @version v.0.1
*/
@WebFilter(filterName="myFilter",urlPatterns="/*")
public class MyFilter implements Filter{
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("過濾器初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException,ServletException {
System.out.println("執行過濾操作");
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("過濾器銷燬");
}
}
ServletContext監聽器(Listener)檔案
com.kfit.listener.MyServletContextListener:
package com.kfit.listener;
importjavax.servlet.ServletContextEvent;
importjavax.servlet.ServletContextListener;
importjavax.servlet.annotation.WebListener;
/**
* 使用@WebListener註解,實現ServletContextListener介面
*
* @author Angel(QQ:412887952)
* @version v.0.1
*/
@WebListener
public class MyServletContextListenerimplements ServletContextListener {
@Override
publicvoid contextDestroyed(ServletContextEvent arg0) {
System.out.println("ServletContex銷燬");
}
@Override
publicvoid contextInitialized(ServletContextEvent arg0) {
System.out.println("ServletContex初始化");
}
}
ServletContext監聽器(Listener)檔案(HttpSessionListener)
MyHttpSessionListener.java
package com.kfit.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 監聽Session的建立與銷燬
*
*/
@WebListener
publicclassMyHttpSessionListenerimplementsHttpSessionListener {
@Override
publicvoid sessionCreated(HttpSessionEventse) {
System.out.println("Session 被建立");
}
@Override
publicvoid sessionDestroyed(HttpSessionEventse) {
System.out.println("ServletContex初始化");
}
}
注意不要忘記在 SpringBootSampleApplication.java 上新增@ServletComponentScan 註解。
啟動的過程中我們會看到輸出:
ServletContex初始化
過濾器初始化
服務啟動後,隨便訪問一個頁面,會看到輸出:
61. mybatic insert異常:BindingException: Parameter 'name' not found【從零開始學Spring B】
60. Spring Boot寫後感【從零開始學Spring Boot】
59. Spring Boot Validator校驗【從零開始學Spring Boot】
58. Spring Boot國際化(i18n)【從零開始學Spring Boot】
57. Spring 自定義properties升級篇【從零開始學Spring Boot】
56. spring boot中使用@Async實現非同步呼叫【從零開始學Spring Boot】
55. spring boot 服務配置和部署【從零開始學Spring Boot】
54. spring boot日誌升級篇—logback【從零開始學Spring Boot】
52. spring boot日誌升級篇—log4j多環境不同日誌級別的控制【從零開始學Spring Boot】
51. spring boot屬性檔案之多環境配置【從零開始學Spring Boot】
50. Spring Boot日誌升級篇—log4j【從零開始學Spring Boot】
49. spring boot日誌升級篇—理論【從零開始學Spring Boot】
48. spring boot單元測試restfull API【從零開始學Spring Boot】
47. Spring Boot傳送郵件【從零開始學Spring Boot】
46. Spring Boot中使用AOP統一處理Web請求日誌
45. Spring Boot MyBatis連線Mysql資料庫【從零開始學Spring Boot】
44. Spring Boot日誌記錄SLF4J【從零開始學Spring Boot】
43. Spring Boot動態資料來源(多資料來源自動切換)【從零開始學Spring Boot】
42. Spring Boot多資料來源【從零開始學Spring Boot】
41. Spring Boot 使用Java程式碼建立Bean並註冊到Spring中【從零開始學Spring Boot】
40. springboot + devtools(熱部署)【從零開始學Spring Boot】
39.4 Spring Boot Shiro許可權管理【從零開始學Spring Boot】
39.3 Spring Boot Shiro許可權管理【從零開始學Spring Boot】
39.2. Spring Boot Shiro許可權管理【從零開始學Spring Boot】
39.1 Spring Boot Shiro許可權管理【從零開始學Spring Boot】
38 Spring Boot分散式Session狀態儲存Redis【從零開始學Spring Boot】
37 Spring Boot整合EHCache實現快取機制【從零開始學Spring Boot】
36 Spring Boot Cache理論篇【從零開始學Spring Boot】
35 Spring Boot整合Redis實現快取機制【從零開始學Spring Boot】
34Spring Boot的啟動器Starter詳解【從零開始學Spring Boot】
33 Spring Boot 監控和管理生產環境【從零開始學Spring Boot】
32 Spring Boot使用@SpringBootApplication註解【從零開始學Spring Boot】
更多檢視部落格: http://412887952-qq-com.iteye.com/
61. mybatic insert異常:BindingException: Parameter 'name' not found【從零開始學spring B】
60. Spring Boot寫後感【從零開始學Spring Boot】
59. Spring Boot Validator校驗【從零開始學Spring Boot】
58. Spring Boot國際化(i18n)【從零開始學Spring Boot】
57. Spring 自定義properties升級篇【從零開始學Spring Boot】
56. spring boot中使用@Async實現非同步呼叫【從零開始學Spring Boot】
55. spring boot 服務配置和部署【從零開始學Spring Boot】
54. spring boot日誌升級篇—logback【從零開始學Spring Boot】
52. spring boot日誌升級篇—log4j多環境不同日誌級別的控制【從零開始學Spring Boot】
51. spring boot屬性檔案之多環境配置【從零開始學Spring Boot】
50. Spring Boot日誌升級篇—log4j【從零開始學Spring Boot】
49. spring boot日誌升級篇—理論【從零開始學Spring Boot】
48. spring boot單元測試restfull API【從零開始學Spring Boot】
47. Spring Boot傳送郵件【從零開始學Spring Boot】
46. Spring Boot中使用AOP統一處理Web請求日誌
45. Spring Boot MyBatis連線Mysql資料庫【從零開始學Spring Boot】
44. Spring Boot日誌記錄SLF4J【從零開始學Spring Boot】
43. Spring Boot動態資料來源(多資料來源自動切換)【從零開始學Spring Boot】
42. Spring Boot多資料來源【從零開始學Spring Boot】
41. Spring Boot 使用Java程式碼建立Bean並註冊到Spring中【從零開始學Spring Boot】
40. springboot + devtools(熱部署)【從零開始學Spring Boot】
39.4 Spring Boot Shiro許可權管理【從零開始學Spring Boot】
39.3 Spring Boot Shiro許可權管理【從零開始學Spring Boot】
39.2. Spring Boot Shiro許可權管理【從零開始學Spring Boot】
39.1 Spring Boot Shiro許可權管理【從零開始學Spring Boot】
38 Spring Boot分散式Session狀態儲存Redis【從零開始學Spring Boot】
37 Spring Boot整合EHCache實現快取機制【從零開始學Spring Boot】
36 Spring Boot Cache理論篇【從零開始學Spring Boot】
35 Spring Boot整合Redis實現快取機制【從零開始學Spring Boot】
34Spring Boot的啟動器Starter詳解【從零開始學Spring Boot】
33 Spring Boot 監控和管理生產環境【從零開始學Spring Boot】
32 Spring Boot使用@SpringBootApplication註解【從零開始學Spring Boot】
更多檢視部落格: http://412887952-qq-com.iteye.com/