2012-06-23 51 views
0

我正在Netbeans中开发一个JSP项目。我正在使用一些JSP文件和一些Java文件。 项目结构如下:JSP项目结构 - 文件放置

root 
-Web Pages 
    --Jsp files 
-Source Packages 
    --myPacakge 
    ---Java files 
    --myIndex (it's a folder) 

所以,我的问题是:我想从一个java文件指myIndex,被放置在mypackage中。

我首先假定java文件以root身份看到“Source Packages”。 所以,我认为索引的路径只是“myIndex”,但通过调试器,我发现它正在寻找C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.14 \ bin \ myIndex”

然后我尝试以下路径:“\ myIndex”,但它现在在看“C:\ myIndex”

能否请你帮我说, myIndex的正确路径应该如何,或者如果我应该把它放在项目的某个地方?

+0

我用了一个绝对路径,它的工作原理,但这不是一个正确的解决方案。有任何想法吗? –

回答

1

你显示的是你的源项目的结构。当您运行部署的Web应用程序时,不再有源项目。所有内容都捆绑在一个war文件中,其中包含JSP文件,其他Web资源,WEB-INF/classes下的类文件以及WEB-INF/lib下的jar文件。如果您要访问一个文件,该文件是在生成的WAR文件,里面WEB-INF/classes,那么你应该使用的类加载器访问它,使用

InputStream in = SomeClassOfTheWebApp.class.getResourceAsStream("/myIndex/someFile.txt"); 

如果你打算存储myIndex目录里面的东西,那就算了关于它:战争文件是只读的。在webapp外部的文件系统上配置一些绝对目录,并使用此绝对位置来存储新文件。不要使用相对位置,因为它取决于服务器的物理位置,启动方式,JVM的当前目录是什么,等等。如果服务器移动,所有内容都会中断。

+0

很好的答案。对于为什么webapp之外的文件应该被绝对路径引用以及上下文路径如何根据服务器运行方式而变化,添加几句话是很好的。 – toniedzwiedz