从 java 访问 tomcat 别名目录
access tomcat alias dir from java
在 Tomcat7 中,有一个选项可以使用上下文中的别名,如下所示:
<Context aliases="/up=/var/tomcat/upload"></Context>
有了这个,我可以从网络应用程序外部访问文件。现在,我想从我的 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 内部(war 内部)的静态内容。
您单独告诉您的 Java 代码上传文件夹 (/var/tomcat/upload
) 的路径,以便它可以 read/write 那里的文件。
示例:
<Context aliases="/up=/var/tomcat/upload">
<Parameter name="uploadDir" value="/var/tomcat/upload"/>
</Context>
你的java代码可以通过调用ServletContext.getInitParameter("uploadDir")
获取参数值。
在 Tomcat7 中,有一个选项可以使用上下文中的别名,如下所示:
<Context aliases="/up=/var/tomcat/upload"></Context>
有了这个,我可以从网络应用程序外部访问文件。现在,我想从我的 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 内部(war 内部)的静态内容。
您单独告诉您的 Java 代码上传文件夹 (/var/tomcat/upload
) 的路径,以便它可以 read/write 那里的文件。
示例:
<Context aliases="/up=/var/tomcat/upload">
<Parameter name="uploadDir" value="/var/tomcat/upload"/>
</Context>
你的java代码可以通过调用ServletContext.getInitParameter("uploadDir")
获取参数值。