当前位置: 首页 > 面试题库 >

在servlet(Web应用程序)中,我如何知道相对路径?

卜阳
2023-03-14
问题内容

我在.war文件的根目录中有一个jsp文件。然后我有一个名为STUFF的文件夹。

如何访问STUFF中的文件read.txt?

/Name_of_war/STUFF/read.txt是正确的路径吗?


问题答案:

与webapp相关的路径为/STUFF/read.txt

可以
使用ServletContext#getRealPath()一个相对的网络路径转换为绝对的本地磁盘文件系统路径。这样,您就可以在通常java.io对它正在运行的Web上下文一无所知的普通内容中进一步使用它。例如

String relativeWebPath = "/STUFF/read.txt";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath);
// Do your thing with File.

但是,如果服务器配置为在内存中而不是磁盘上扩展WAR,则此方法不起作用。使用getRealPath()总是有这样的警告,在实际应用中不建议使用。如果您最终需要的只是获取InputStream该文件的一个(可能已经使用过)FileInputStream,则最好使用ServletContext#getResourceAsStream()直接将其获取为InputStream

String relativeWebPath = "/STUFF/read.txt";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// Do your thing with InputStream.


 类似资料:
  • 在我的申请中,我必须显示一个关于发生的特定动作的通知? 如何在操作时使用来自服务器的推送通知。.?(我将java(servlet/JSP)与tomcat一起使用)

  • 问题内容: 我想从Java Web应用程序读取文件。我不想提供文件的绝对路径。我只想将文件放在Web应用程序的某个目录中。 要么 可以将其与.war文件(打包的Web应用程序)一起放置。 给文件的相对路径。我试过了,但是没有用。 ======== 更新 ======== 我将向客户交付文件(打包的Web应用程序)。该Web应用程序将读取一个文件(让我们说),该文件将由客户端复制到服务器。因此,我需

  • 在我的申请中,我必须显示有关已发生特定操作的通知? 然后我必须向登录用户显示通知。 获取通知的一种方法是在一定时间间隔后继续轮询。即拉动通知。但这会对服务器造成不必要的点击。 如何使用来自服务器的推送通知?我在Tomcat中使用JavaServlet和JSP。

  • 问题内容: 我正在编写一个servlet(特别是Scalatra)。在servlet中,我在目录中包含许多链接,该目录包含在每个页面中。我希望这些链接相对于应用程序基础。如果我使用诸如“ / foo”之类的链接,那么当从根目录(localhost:8080 /)提供servlet时一切正常,但是如果我从Jetty / Tomcat以及其他servlet(localhost:8080 / servl

  • 我希望能够从服务spring bean中动态检索spring web应用程序的“servlet上下文路径”(例如或)。 这样做的原因是,我想在电子邮件中使用这个值,将发送给网站的用户。 编辑:附加要求: 我想知道是否有一种方法可以在应用程序启动时检索上下文路径,并让它在所有时间都可供我的所有服务检索?

  • 我有一个数据库单例,我想在应用程序完成时对其调用.close()。 我可以在Application类中的onCreate()中对数据库调用.open(),但在哪里调用.close()呢?