Springboot入門之四-進行自定義Servlet、過濾器及監聽器配置

Springboot入門之四-進行自定義Servlet、過濾器及監聽器配置

SpringBoot默認以jar包的方式啟動內部自定義的Servlet組件,沒有web.xml文件,這種情況下我們不禁會考慮,那之前使用SSM框架時的自定義Servlet、過濾器及監聽器要如何配置呢?今天就來解答這個問題:

前期準備工作:

創建SpringBoot工程,創建CustomerServletConfigurer配置類如下,用於進行配置,名字可以自取

@Configuration

public class CustomerServletConfigurer {

}

自定義Servlet配置

創建MyServlet類實現HttpServlet接口,如下

public class MyServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("MyServlet.doGet");

doPost(req,resp);

}

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("MyServlet.doPost");

}

}

在CustomerServletConfigurer配置類中配置ServletRegistrationBean的返回類,如下

@Bean

//配置自定義的Servlet

public ServletRegistrationBean servletRegistrationBean(){

ServletRegistrationBean servletRegistrationBean=new ServletRegistrationBean();

servletRegistrationBean.setServlet(new MyServlet());

servletRegistrationBean.addUrlMappings("/myServlet");

return servletRegistrationBean;

}

通過該配置可實現在客戶端訪問"/myServlet"相關請求時使用自定義的MyServlet進行處理

自定義Filter配置

創建MyFilter類,實現Filter接口,實現相關方法,如下

public class MyFilter implements Filter {

public void init(FilterConfig filterConfig) throws ServletException {

System.out.println("MyFilter.init");

}

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

System.out.println("MyFilter.doFilter");

}

public void destroy() {

System.out.println("MyFilter.destroy");

}

}

在CustomerServletConfigurer配置類中配置FilterRegistrationBean的返回類,如下

@Bean

//配置自定義的Filter

public FilterRegistrationBean filterRegistrationBean(){

FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();

filterRegistrationBean.setFilter(new MyFilter());

filterRegistrationBean.addUrlPatterns("/myFilter");

return filterRegistrationBean;

}

通過該配置可實現在客戶端訪問"/myFilter"時先使用過濾器過濾

自定義Listener配置

​創建MyListener類,實現ServletContextListener接口,實現相關方法,如下

public class MyListener implements ServletContextListener {

public void contextInitialized(ServletContextEvent sce) {

System.out.println("MyListener.contextInitialized");

}

public void contextDestroyed(ServletContextEvent sce) {

System.out.println("MyListener.contextDestroyed");

}

}

​在CustomerServletConfigurer配置類中配置FilterRegistrationBean的返回類,如下

@Bean

//配置自定義的Listener

public ServletListenerRegistrationBean servletListenerRegistrationBean(){

ServletListenerRegistrationBean servletListenerRegistrationBean=new ServletListenerRegistrationBean();

servletListenerRegistrationBean.setListener(new MyListener());

return servletListenerRegistrationBean;

}

通過該配置可實現Servlet在創建及銷燬時執行相應方法

江山父老能容我,不使人間造孽錢,本人小白,如有問題,歡迎指教​


分享到:


相關文章: