Java - 动态地将URL模式添加到Servlet

时间:2014-01-30 16:18:35

标签: java servlets servlet-3.0

是否可以在运行时动态地向Servlet添加URL模式?例如,当Servlet启动时,扫描文件夹中的注释,然后将这些url模式注入servlet中?

  • 提供更多清晰度 -

在Servlet的init文件中,我想这样做(伪代码)

// scan all the files in the package my.project.services
// find all the classes with the Annotation @Service
// read those annotations, find the url patterns in them, and insert them into the servlet

1 个答案:

答案 0 :(得分:7)

我不确定我理解你的最终目标,但这是一个可能的解决方案。

使用Servlet 3.0,实现ServletContainerInitializer接口。将其注册为javadoc说

  

此接口的实现必须由JAR文件声明   位于META-INF/services目录内并以其命名的资源   此接口的完全限定类名

onStartup(..)方法中,您可以访问Web应用程序类路径中的所有类。

逐一扫描它们。如果一个类在你想要的包中,并且它有你正在寻找的注释,则处理它并将URL模式存储在一个集合中。

扫描完成后,您可以使用提供的Servlet注册ServletContext个实例/类,并使用给定的ServletRegistration.Dynamic对象注册URL模式。

ServletRegistration.Dynamic registration = servletContext.addServlet("myServlet", new MyServlet());
registration.addMapping(yourCollectionAsAStringArray);

如果您需要,还有许多其他配置选项。