gpt4 book ai didi

java - 阅读 Web 应用程序资源

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:23 25 4
gpt4 key购买 nike

背景

开发一个简单的网络应用程序(Eclipse + JBoss + Apache Tomcat)来生成 XML 文件。

问题

“业务领域”列表查询数据库,“列集群”列表使用选定的“业务领域”项目查询数据库。这两个都是存储在外部文本文件中的唯一查询。

文件当前存储在以下位置:

  • WebContent/META-INF/business-areas.sql
  • WebContent/META-INF/column-clusters.sql

然后将这些用于播种 PreparedStatement

源代码

读取 SQL 代码的方法可能类似于:

  private String getSQL() {
String result = "";

try {
BufferedReader br = open( "business-areas.sql" );
String line = null;

while( (line = br.readLine()) != null ) {
result += line;
}

br.close();
}
catch( Exception e ) {
e.printStackTrace();
}

return result;
}

问题

我想知道:

  1. 存储此类 Assets 以作为网络应用程序的一部分进行部署的最佳做法是什么? (也就是说,META-INF 是一个好的位置,还是 META-INF/resources 是首选?)
  2. 您会推荐哪些 API 来读取文件内容? (也就是说,我如何编写 open 方法以便它找到要打开的文件?)

我已经使用 JNDI 来建立数据库连接,但如果可能的话,我宁愿不使用 JNDI 来获取文件的句柄。

相关网站

谢谢!

最佳答案

正确的位置(也是常见的做法)是将它们放在您的 source 目录下,然后将编译到 WEB-INF/classes 目录中。我不确定您在对@Dave 的回复中所说的“类目录是易变的”是什么意思,但这是大多数(如果不是全部)Java 网络应用程序存储内容的方式。 WEB-INF/classes 不仅适用于 Java 类。日志属性文件(如 log4j)、Hibernate 和 Spring XML 文件存储在 source 目录下很常见,您可以使用如下方式安全地访问这些文件:-

// in this case, the business-areas.sql is located right under "source/sql" directory
InputStream is = getClass().getClassLoader().getResourceAsStream("sql/business-areas.sql");
BufferedReader br = new BufferedReader(new InputStreamReader(is));

关于使用 META-INF 的一些有用信息:What's the purpose of META-INF?

关于java - 阅读 Web 应用程序资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com