zoukankan      html  css  js  c++  java
  • 十四:Servlet3.0的动态

    动态的创建是为了简化配置文件的.对于我们创建的servlet,filter和listener后可以使用。这也是注解的另外一种替代方式。

    package com.hotusm.dynamic;
    
    import javax.servlet.FilterRegistration;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.ServletRegistration;
    import javax.servlet.annotation.WebListener;
    
    @WebListener
    public class DynamicInitContextListener implements ServletContextListener{
    
        public void contextInitialized(ServletContextEvent sce) {
            
            ServletContext context = sce.getServletContext();
            ServletRegistration.Dynamic dynamicServlet=context.addServlet("dynamicServlet", DynamicServlet.class); 
            dynamicServlet.addMapping("/dynamicServlet");
            dynamicServlet.setAsyncSupported(true);
            dynamicServlet.setLoadOnStartup(1);
            
            FilterRegistration.Dynamic dynamicFilter = context.addFilter("dynamicFilter", DynamicFilter.class);
            
            context.addListener("com.hotusm.dynamic.DynamicListener");
            
        }
    
        public void contextDestroyed(ServletContextEvent sce) {
            
        }
    
    }

    其中前三个方法的作用是相同的,只是参数类型不同而已;通过 createServlet() 方法创建的 Servlet,通常需要做一些自定义的配置,然后使用 addServlet() 方法来将其动态注册为一个可以用于服务的 Servlet。两个 getServletRegistration() 方法主要用于动态为 Servlet 增加映射信息,这等价于在 web.xml( 抑或 web-fragment.xml) 中使用 <servlet-mapping> 标签为存在的 Servlet 增加映射信息。

    以上 ServletContext 新增的方法要么是在 ServletContextListener 的 contexInitialized 方法中调用!

  • 相关阅读:
    投票系统完善
    投票系统设计与实现
    一天天进步
    洛谷P4168 [Violet]蒲公英 题解 数列分块
    LOJ6285. 数列分块入门 9 题解
    洛谷P5340 大中锋的游乐场 题解 分层图最短路
    P1073 [NOIP2009 提高组] 最优贸易 题解 分层图最短路
    洛谷P7297 [USACO21JAN] Telephone G 题解 分层图最短路
    洛谷P1119 灾后重建 题解 Floyd算法
    安装redis 后本地系统空间越来越小
  • 原文地址:https://www.cnblogs.com/deityjian/p/11468144.html
Copyright © 2011-2022 走看看