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在创建及销毁时执行相应方法
江山父老能容我,不使人间造孽钱,本人小白,如有问题,欢迎指教
閱讀更多 鬼魅的程序湧上心頭 的文章