java - Spring框架和tomcat - 如何启用以下文件夹符号链接(symbolic link)?

标签 java spring spring-mvc tomcat6 symlink

我有一个用 Java + spring 框架编写的 Web 应用程序。使用的应用程序服务器是 tomcat。假设 Web 应用程序名称是“sample-webapp”。如果我在 example-webapp/resources/下创建一个符号链接(symbolic link),如下所示-

ls -l

.../sample-webapp/resources/temp-csv-location -> /tmp/csv-location

这里的“temp-csv-location”是一个符号链接(symbolic link)。

现在,如果我在 jsp 页面中引用此目录中的文件,类似于

<a href="http://localhost:8080/sample-webapp/resources/temp-csv-location/test.csv">Click</a>

它给了我一个 404 错误。我确认 test.csv 文件存在于/tmp/csv-location/中。我也确认了权限。在普通的 tomcat 用法中,我们可以在 context.xml 中添加“allowLinking=true”。

有没有办法在spring框架中做到这一点?

最佳答案

针对您的问题的另一种通用解决方案是编写一个 Servlet 来处理计算起始路径的所有请求,然后 Servlet 将通过解析其路径来处理文件的提供。

要设置 Servlet,您必须将其放入 web.xml

<filter>
    <filter-name>csvFileDownloadServlet</filter-name>
    <filter-class>edu.sharif.resource.CSVFileDownloadServlet</filter-class>
</filter>
<filter-mapping>
    <filter-name>csvFileDownloadServlet</filter-name>
    <url-pattern>/resources/temp-csv-location/*</url-pattern>
</filter-mapping>

然后您应该编写 edu.sharif.resource.CSVFileDownloadServlet 类。通过简单的搜索就可以找到解决这个问题的几种实现方式,例如:

关于java - Spring框架和tomcat - 如何启用以下文件夹符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274933/

相关文章:

java - 来自 ok Retrofit 响应的图像的空模型

java - 使用错误的小数分隔符在 Android 中格式化货币

Spring Boot : how to configure autowired WebTestClient

spring-mvc - 使用 Apache POI 从 Spring Controller 返回 Excel 文档

mysql - 无法 Autowiring 字段 : com. srk.dao.UserDao com.srk.service.UserServiceImpl.userDao; org.springframework.orm.hibernate4.LocalSessionFactoryBuilder

java - Maven: `Unknown packaging: bundle` 错误来自依赖包打包

java - Android OpenGLES 1.0 视口(viewport)以错误的分辨率呈现

java - 在 tomcat 7.0 中运行 Spring MVC 应用程序给我 HTTP 状态 404 : requested resource is not available.

java - 静态 block 不适用于 Spring 中的@Value

java - Spring Framework MVC 中的 "Webpage has expired"