tomcat在哪里存储我的文件?

bra*_*ead 7 java apache tomcat netbeans

我使用Netbeans创建了一个Web应用程序.之前,当我通过netbeans和tomcat服务器(这是一个zip)运行Web应用程序时,我所有的外部文件(我用于我的应用程序的上传文件和其他帮助文件)都存储在bin目录中.

现在,我尝试使用Windows安装程序安装apache tomcat服务,因为我想知道如何在专用服务器上部署项目.我已经使用tomcat的deploy实用程序成功部署了war文件.但是,当我通过apache tomcat windows服务运行项目时,它不是在bindir中保存文件而且它也无法读取我在bindir中粘贴的文件.

您认为我应该在哪里放置文件?

编辑:在观察tomcat服务目录后,我发现它存储在根目录中.如果我将tomcat安装在'E:\ Apache\services\tomcat \',它将存储在'tomcat'目录中.

Ste*_*n C 7

最终,您的应用程序所做的就是确定文件的存储位置.

通过它的声音,您的应用程序将文件存储在JVM的当前目录中,当您通过NetBeans启动Web服务器时恰好是"bin"目录.如果是这样,您将在Tomcat作为Windows服务启动时的当前目录中找到它们.

坦率地说,我认为你错了.您应该有意识地决定是否应该存储上传的文件,然后确保您使用的上传机制将它们放在那里.

显然,将它们放在当前目录中是个坏主意.您不希望它们存储在不同的位置,具体取决于Web容器的启动方式.显然,"bin"目录是一个不合适的地方.(如果用户尝试上传名称与"bin"中的一个脚本匹配的文件,会发生什么?)


那么,应该你可以把文件?

在我看来,你有三个选择:

  • 在目录的子目录中work...这是Tomcat传统上放置诸如编译的JSP之类的暂时文件的地方.

  • 在Tomcat安装目录的自定义子目录中.

  • 在文件系统中其他位置的单独目录中.

您不应该放弃在webapp目录中,因为重新部署webapp时,通常会有文件被吹走,并且因为上传文件会干扰您的webapp存在更大的风险.

您不应该将它们放在bin或logs或lib或config目录中,因为存在干扰的风险......并且因为它们根本不是合乎逻辑的地方.


如果要编写相对于tomcat安装目录的根目录的文件,可以通过调用找出它是什么System.getProperty("catalina.base").

但无论你做什么,你都需要确保用户不会意外或故意将文件上传到错误的地方; 例如,通过提供绝对路径名或使用"../../ ...."的路径名来逃离上传区域.


nIc*_*cOw 3

当您安装 Apache 时,该项目应该位于 webapp 文件夹内:

C:\Apache\tomcat\webapps
Run Code Online (Sandbox Code Playgroud)

就像我的项目是 gaganisonline 所以目录结构是这样的:

小路 :C:\Apache\tomcat\webapps\gaganisonline

                            gaganisonline
                            |           |
                         WEB-INF      index.html
                            |
              ---------------------------
              |         |      |        |
            web.xml    src    lib    classes
Run Code Online (Sandbox Code Playgroud)