gpt4 book ai didi

eclipse - Eclipse 动态 Web 项目中静态文件目录的放置位置

转载 作者:行者123 更新时间:2023-12-02 11:11:53 25 4
gpt4 key购买 nike

我使用 Eclipse 创建了一个动态 Web 项目。我有一些 java 程序,它们放置在“Java Resources/src”文件夹中。这些程序使用我放置在“WebContent/WEB-INF/lib”文件夹中的 Lucene 库。 Java 程序需要访问一些文本文件和一个包含 Lucene 生成的索引文件的目录。我将这些静态文件放在 eclipse 中的 WebContent 下,以便它们出现在导出的 WAR 文件中。

我通过在 Java 程序中直接引用这些静态文件来访问它们。

BufferedReader br = new BufferedReader(new FileReader("abc.txt"));

//abc.txt is in the WebContent folder of Eclipse project.

从 JSP 页面中,我调用 java 程序(其中包含上述行),但它显示 FileNotFoundException。请帮助我解决这个问题。

最佳答案

您无法直接从 Java 访问 webapp 内可用的资源。

作为来自 /src/YourClass.java 的文件进入/WEB-INF/classes/编译时。所以,当您尝试访问BufferedReader br = new BufferedReader(new FileReader("abc.txt"));时.

它根据您给定的示例在“/WEB-INF/classes/abc.txt”中搜索“abc.txt”。

使用servletContext.getRealPath("/");它返回您的 Web 应用程序的路径 webapps目录,然后就可以使用该路径访问资源。

注意: servletContext.getRealPath("/"); 返回的路径还取决于您如何部署 Web 应用程序。默认情况下,Eclipse 使用自己的内部机制来部署 Web 应用程序。

这是关于它应该如何的示例屏幕截图 Tomcat- Web Application deploy Architecture

Servlet 代码:

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StaticTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ServletContext servletContext;
private String rootPath;

public StaticTestServlet() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
servletContext = config.getServletContext();
rootPath = servletContext.getRealPath("/");
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("In Get and my path: " + rootPath + "documents"); // documents is the direcotry name for static files
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

System.out.println("In Post and my path: " + rootPath + "documents"); // documents is the direcotry name for static files
}
}

关于eclipse - Eclipse 动态 Web 项目中静态文件目录的放置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15506341/

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