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在創建及銷燬時執行相應方法
江山父老能容我,不使人間造孽錢,本人小白,如有問題,歡迎指教