从java

时间:2016-11-22 20:44:45

标签: java tomcat aliases

在Tomcat7中,可以选择使用上下文中的别名:

 <Context aliases="/up=/var/tomcat/upload"></Context>

有了这个,我可以从webapp外部访问文件。现在,我想从我的Java代码中编写和读取这个目录,但不知道如何。

我可以这样做:

servletContext.getResourcePaths("/up/")

其中显示了/ var / tomcat / upload的内容。

我怎么写这个目录?

我对例外答案做了什么: 将此添加到context.xml:

<Context aliases="/up=/var/tomcat/upload">
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow=".*" />
     <Parameter name="uploadDir" value="/var/tomcat/upload"/>

这在我的java代码中:

String uploadDir = servletContext.getInitParameter("uploadDir") + subDir;
OutputStream bos = new FileOutputStream(uploadDir + fileName);

这可以工作,但我只能使用参数并跳过别名,因为对于java它没有帮助。所以我不太确定别名背后的想法是什么。我认为这是为了上传文件,因为重新部署后这个目录和内容不会被覆盖。但是,如果java只能使用额外的参数访问它,那么它只能用于提供可能位于webapp内部的静态内容(在战争中)。

1 个答案:

答案 0 :(得分:1)

您可以单独告诉您的Java代码上传文件夹(/var/tomcat/upload)的路径,以便它可以在那里读/写文件。

示例:

<Context aliases="/up=/var/tomcat/upload">
    <Parameter name="uploadDir" value="/var/tomcat/upload"/>
</Context>

您的java代码可以通过调用ServletContext.getInitParameter("uploadDir")来获取参数值。