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

 江西理工大学-交通091班-李吉平 发布于 2023-01-30 12:53

是否可以在运行时动态地向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

Sotirios Del.. 7

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

使用Servlet 3.0,实现ServletContainerInitializer接口.注册为javadoc说

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

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

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

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

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

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

1 个回答
  • 我不确定我理解你的最终目标,但这是一个可能的解决方案.

    使用Servlet 3.0,实现ServletContainerInitializer接口.注册为javadoc说

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

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

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

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

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

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

    2023-01-30 12:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有