Spring Boot基础教程10-web应用开发-Servlets, Filters, listeners

Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、 Filter、Listener等等

 

二.在spring boot中的三种实现方式

  方法一:通过注册ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制

 

/**

 * 自定义servlet

 *

 * @author wujing

 */

public class CustomServlet extends HttpServlet {

 

  /**

   *

   */

  private static final long serialVersionUID = 1L;

 

  @Override

  protected void doGet(HttpServletRequest request, HttpServletResponse response)

         throws ServletException, IOException {

    System.out.println("servlet get method");

    doPost(request, response);

  }

 

  @Override

  protected void doPost(HttpServletRequest request, HttpServletResponse response)

         throws ServletException, IOException {

    System.out.println("servlet post method");

    response.getWriter().write("hello world");

  }

 

}

 

/**

 * 自定义filter

 *

 * @author wujing

 */

public class CustomFilter implements Filter {

 

  @Override

  public void init(FilterConfig filterConfig) throws ServletException {

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

  }

 

  @Override

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

         throws IOException, ServletException {

    System.out.println("do filter");

    chain.doFilter(request, response);

  }

 

  @Override

  public void destroy() {

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

  }

 

}

 

/**

 * 自定义listener

 *

 * @author wujing

 */

public class CustomListener implements ServletContextListener {

 

  @Override

  public void contextInitialized(ServletContextEvent sce) {

    System.out.println("contextInitialized");

  }

 

  @Override

  public void contextDestroyed(ServletContextEvent sce) {

    System.out.println("contextDestroyed");

  }

 

}

 

注册bean

 

@Bean

  public ServletRegistrationBean servletRegistrationBean() {

    return new ServletRegistrationBean(new CustomServlet(), "/roncoo");

  }

 

  @Bean

  public FilterRegistrationBean filterRegistrationBean() {

    return new FilterRegistrationBean(new CustomFilter(), servletRegistrationBean());

  }

 

  @Bean

  public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean() {

    return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());

  }

 

  方法二:通过实现 ServletContextInitializer 接口直接注册

 

implements ServletContextInitializer {

 

   @Override

   public void onStartup(ServletContext servletContext) throws ServletException {

      servletContext.addServlet("customServlet", new CustomServlet()).addMapping("/roncoo");

      servletContext.addFilter("customFilter", new CustomFilter())

            .addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "customServlet");

      servletContext.addListener(new CustomListener());

  }

 

  方法三:在 SpringBootApplication 上使用@ServletComponentScan 注解后,直接通过@WebServlet、@WebFilter、@WebListener 注解自动注册


优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.roncoo.com/article/125499

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。