![在这里插入图片描述](https://img-blog.csdnimg.cn/a110b3bbd9854faba8b0fb4fb8adcf9e.png)
import javax.servlet.*;
import javax.servlet.annotation.HandlesTypes;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.EnumSet;
import java.util.Set;
@HandlesTypes(MyController.class)
public class ServletContainerDemo implements ServletContainerInitializer {
@Override
public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException {
ServletRegistration.Dynamic dynamic = servletContext.addServlet("hello", HelloServlet.class);
dynamic.setLoadOnStartup(0);
dynamic.addMapping("/hh");
FilterRegistration.Dynamic fil = servletContext.addFilter("fil", ServletFilterDemo.class);
EnumSet<DispatcherType> request = EnumSet.of(DispatcherType.REQUEST);
fil.addMappingForUrlPatterns(request, true, "/hh");
servletContext.addListener(ServletListenerDemo.class);
servletContext.addListener(ServletRequestListenerDemo.class);
servletContext.addListener(ServletRequestListenerDemo.class);
servletContext.addListener(HttpSessionAttributeDemo.class);
servletContext.addListener(HttpServletRequestAttributeDemo.class);
try {
for (Class<?> aClass : set) {
System.out.println("全限定类名:"+aClass.getCanonicalName());
Constructor<?> constructor = aClass.getConstructor();
MyController o = (MyController) constructor.newInstance();
o.say();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
public interface MyController {
void say();
}
public class TestController implements MyController{
@Override
public void say() {
System.out.println("TestController say()....");
}
}