我有以下目录布局:
src main Java resources SQL (database script) Spring (configuration) network application
src
main
Java
resources
在ServletContextListener类中,我想访问SQL目录下的文件并列出它们。基本上我的问题是路径,因为我知道简而言之列出目录下的文件是:
File folder = new File(path); File[] listOfFiles = folder.listFiles();
也许我可以使用ServletContextEventObject尝试建立路径resources/sql
ServletContextEvent
resources/sql
public void contextInitialized(ServletContextEvent event) { event.getServletContext(); //(getRealPath etc.) }
是否存在以相对的非硬编码方式设置该路径的方法?像new File("classpath:sql")(如果可能的话最好是spring)之类的东西,或者我应该如何使用ServletContext指向resources/sql?
new File("classpath:sql")
我假设在构建时将的内容src/main/resources/复制到WEB- INF/classes/您的.war内部。如果是这种情况,您可以这样做(用实数值代替类名和要加载的路径)。
src/main/resources/
WEB- INF/classes/
URL sqlScriptUrl = MyServletContextListener.class .getClassLoader().getResource("sql/script.sql");