tomcat在哪里存储我的文件?

时间:2012-03-04 03:26:37

标签: java apache tomcat netbeans

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

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

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

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

2 个答案:

答案 0 :(得分:6)

最终,您的应用程序将确定文件的存储位置。

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

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

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


那么应该你要把文件放在哪里?

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

  • work目录的子目录中......这是Tomcat通常放置暂时文件(如编译的JSP)的地方。

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

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

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

你不应该把它们放在垃圾箱或日志或lib或配置目录中,因为存在干扰的风险......并且因为它们根本不是合乎逻辑的地方。


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

但是无论你做什么,都需要确保用户不会意外或故意将文件上传到错误的位置;例如,通过提供绝对路径名,或使用“.. / .. / ....”从您的上传区域中逃脱的路径名。

答案 1 :(得分:3)

安装Apache时,项目应位于webapp文件夹中:

C:\Apache\tomcat\webapps

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

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

                            gaganisonline
                            |           |
                         WEB-INF      index.html
                            |
              ---------------------------
              |         |      |        |
            web.xml    src    lib    classes