Spring boot學習 (七) 之servlet、filter(過濾器)、listener(監聽器)的學習
前言
使用Spring-Boot
,可以通過掃描註解的方式註冊Servlet、Filter
和listener
。在 啟動類 上使用@ServletComponentScan
註解後,Servlet、Filter、Listene
r 可以分別通過@WebServlet、@WebFilter、@WebListener
註解自動註冊,整體來說還是很簡單的,下面一起來學習一下。
正文
一,servlet的註冊
- 啟動類
@SpringBootApplication @ServletComponentScan public class Chapter1Application { public static void main(String[] args) { SpringApplication.run(Chapter1Application.class, args); } }
- servlet檔案類
/** * @author merlin.xu * @create 2018-11-30-11:34 */ @WebServlet(urlPatterns="/*", description="說明") public class MyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("》》》》》》doPost方法執行》》》》》》"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("》》》》》》doGet方法執行》》》》》》"); doPost(req, resp); } @Override public void init() throws ServletException { super.init(); System.out.println("servlet初始化"); } @Override public void destroy() { super.destroy(); System.out.println("servlet被銷燬"); } }
二,Filter的註冊
- 啟動類和上面一樣
- Filter類
/** * @author merlin.xu * @create 2018-11-28-17:08 * @WebFilter將一個實現了javax.servlet.Filter介面的類定義為過濾器 * 屬性filterName宣告過濾器的名稱,可選 * 屬性urlPatterns指定要過濾 的URL模式,也可使用屬性value來宣告.(指定要過濾的URL模式是必選屬性) */ @WebFilter(filterName="myFilter",urlPatterns="/*") public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("過濾器初始化"); } @Override public void destroy() { System.out.println("過濾器被銷燬"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("執行過濾操作"); filterChain.doFilter(servletRequest, servletResponse); } }
三,Listener的註冊
- 啟動類和上面一樣
- Listener類(有好幾種,這裡實現HttpSessionListener為例 )
/** * 監聽Session的建立與銷燬 * @author merlin.xu * @create 2018-11-29-10:40 */ @WebListener public class MyHttpSessionListener implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent se) { System.out.println("監聽器sessiom被建立"); } @Override public void sessionDestroyed(HttpSessionEvent se) { System.out.println("監聽器session被摧毀"); } }
結果
- 啟動程式,出現如下資訊
監聽器初始化 過濾器初始化
- 啟動後,隨便訪問一個頁面,出現如下資訊
servlet初始化 執行過濾操作 》》》》》》doGet方法執行》》》》》》 》》》》》》doPost方法執行》》》》》》
-
從輸出資訊大家也應該知道servlet,filter,listener三者之間的執行順序了。
原創作者:夢凌小樣
作品連結:ofollow,noindex">https://www.jianshu.com/p/af6ecc629320 【原創不易,轉載請註明出處,感謝理解】
一位愛生活,愛創作,愛分享,愛自己的90後女程式設計師一枚,記錄工作中的點點滴滴,一起學習,共同進步,期待能和優秀的您交上朋友