gpt4 book ai didi

java - 如何访问在tomcat上运行的项目中的文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:41 25 4
gpt4 key购买 nike

我的项目中有一个war文件夹,所以它在开发模式下运行良好。但是当我尝试在本地主机上运行相同的应用程序时。它显示“FileNotFound”。

我使用适用于开发模式的路径:字符串文件路径 =“mydata/”;

现在在 tomcat 上运行时我将使用什么路径?

我还尝试将该文件夹放入 Tomcat Bin 文件夹并使用相同的文件路径,但没有成功!

请指导。

代码:

@SuppressWarnings(“串行”)公共(public)类 GreetingServiceImpl 扩展 RemoteServiceServlet 实现 问候服务{

String filePath = "./cdata/";

public CountryDTO getCountryDataFromFile(String selectedCountry) {

    Gson mydata = new Gson();
CountryDTO dto = null;
System.out.println("test");
try
{
String line;
File f = new File(filePath + selectedCountry + ".txt");

BufferedReader jsonReader = new BufferedReader(new FileReader(f));

///RPC调用

void getJSONDataFromFile(String mAdministrativeArea, AsyncCallback asyncCallback);

//客户端,从那里调用我的代码

mAdministrativeAreaA.addValueChangeHandler(new ValueChangeHandler(){

        @Override
public void onValueChange(ValueChangeEvent<String> changedSubRegion) {
mAdministrativeArea= changedSubRegion.getValue();
System.out.println("going to rpc");
addrService.getJSONDataFromFile(mAdministrativeArea, new AsyncCallback<CountryDTO>() {

@Override
public void onSuccess(CountryDTO json) {


json.setFmt( selectedCountry.getFmt() );

GUIfromFormat(json, ResultType.STATE_OR_PROVINCE);
}

最佳答案

当您在开发模式下运行 Web 应用程序时,当前文件夹很可能是项目根目录。

当您实时运行 Web 应用程序(意味着不是从 IDE 运行)时,您无法猜测当前文件夹,因为它可能因操作系统、服务器等而异。

您可以使用ServletContext.getRealPath()找出路径的底层文件的路径/位置。

如果您调用:

String path = ServletContext.getRealPath("/");

这将返回您的网络应用程序的根文件夹,该文件夹包含特殊的“WEB-INF”文件夹(以及可选的“META-INF”文件夹)。了解此文件夹是一个很好的起点,您可以从这里开始导航(向上 - 父文件夹,或向下 - 子文件夹)。

当然,如果您尝试访问的文件/资源​​位于 Web 文件夹之外,则在生产过程中它将不可用,您必须将其按顺序放置在 Web 文件夹下,以便它与您的 Web 应用程序一起部署代码。

获取ServletContext

你说这是异步调用的服务器端。那么它就是一个servlet。我没有看到您的所有代码,它可能是 RemoteServiceServlet

无论如何,如果有底层 Servlet,您可以从中获取 ServletContext(通过 HttpServletRequest.getServletContext()) ),那么您就有 ServletContext.getRealPath()

您还可以使用 ServletContextListener 获取 ServletContext。操作方法如下:Getting ServletContext at webapp startup

另一种方法

如果将文件/资源​​放在源文件夹中,则可以访问它们的 ClassName.getResource()ClassName.getResourceAsStream() 方法。无论代码(Java 类)是来自 .class 文件还是来自 jar 文件等,这些方法总是会返回正确的资源。

将资源放在类文件旁边还有一个好处,即您的资源将自动随代码移动(当您重新部署代码时,它们将自动部署)。

关于java - 如何访问在tomcat上运行的项目中的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25486767/

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