如何使用在 Tomcat 服务器中运行的 JavaEE 应用程序从文件夹中检索图像?

安德烈·诺比利

我有以下疑问。我有一个 TomCat 服务器实例,我需要在 Internet 上公开一些 JPG 图像。过去,我总是在安装 Apache 服务器然后将我的图像放入htdocs子文件夹中完成此类任务使用Tomcat服务器似乎更复杂。

我在 SO 上找到了这篇文章:How to config Tomcat to serve images from an external folder of webapps?

但我不确定我必须做什么,所以我想问你一些问题来澄清我的疑虑。

据我所知,JavaEE 应用程序是这样的,部署的,向应用程序服务器\servlet 容器添加功能(不同于 Apache,其中 PHP 应用程序只是运行的东西)。

因此,对已发布链接的示例进行推理,在我看来:

  • 我必须创建一个全新的 JavaEE 应用程序,该应用程序将部署到我的 Tomcat 服务器中。

  • 此应用程序将不包含任何类,因为没有必须实现的逻辑。

  • 这个应用程序只需要包含web.xml配置文件,文件将配置一个映射到包含我的图像的目录的 servlet,这个:

    图像 com.example.images.ImageServlet 图像 /images/*

我的疑问是:前面的例子不完整吗?我是否需要编写ImageServlet类来完成这项工作?我能做什么?

挤奶女工

HttpServlet 将完美地满足您的需求。如果需要,您可以定义更多 servlet。

用:

youraddress.xxx/图像/filename.png

这很重要@WebServlet("/images/*")

它将自动引导到 PATH 中定义的文件夹并根据名称检索图像。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

@WebServlet("/images/*")
public class ImageServlet extends HttpServlet {

public static final String PATH = "C:/"
/*
linux
public static final String PATH = "/home/images/"
*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String filename = request.getPathInfo().substring(1);
        File file = new File(PATH,filename);
        response.setHeader("Content-Type", getServletContext().getMimeType(filename));
        response.setHeader("Content-Length",String.valueOf(file.length()));
        response.setHeader("Content-Disposition","inline; filename=\""+filename +"\"");
        Files.copy(file.toPath(),response.getOutputStream());
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用tomcat服务器在Eclipse中运行jsp页面?

如何在外部Tomcat服务器中运行WAR文件的安装代码

从应用程序的本地文件夹中检索图像

当图像存储在node.js服务器上载文件夹中时,如何在角度应用程序中显示图像?

无法使用Tomcat服务器在IntelliJ中运行/调试JSP页面

如何在tomcat服务器中获取所有已部署的应用程序

如何在Tomcat服务器上运行Spark应用程序

如何保护部署在tomcat服务器中的war文件?

如何将HTML文件中的图像绑定在tomcat服务器的WEB-INF \ classes \ uploads文件夹内的HTML页面中

如何在Apache Tomcat 6服务器中修复Java Spring MVC Web应用程序的运行时间?

如何访问应用程序文件夹中的图像

如何设置图像驻留在应用程序文件夹中的Image Control的源

如何在 Blazor 服务器应用程序中上传图像并将图像保存在文件夹中(& 在服务器中)将该 url 保存到数据库

是否可以在tomcat中运行RMI服务器?

从Tomcat服务器中的netbeans项目运行JSP

在Eclipse中运行Tomcat服务器时出错

应用程序将无法在Eclipse中的Tomcat服务器上运行

在Linux的嵌入式Tomcat服务器中运行Spring Boot应用程序

如何在Eclipse中添加Tomcat服务器

如何在Linux中启动tomcat服务器?

如何在 tomcat 服务器中更改 tls 版本?

JavaEE应用服务器中的CompletableFuture / parallelStream

Tomcat服务器错误-端口8080已在使用中

JavaEE应用程序中的app-inf和web-inf文件夹有什么区别?

如何使用 Laravel 从我的应用程序中的私人文件夹中存储和访问图像?

Java从JavaEE应用程序中的不同SMTP服务器发送电子邮件

如何将图像或文件在任何位置复制或删除到UWP应用程序中的文件夹中

如何将域名映射到我在 Tomcat 服务器上运行的 Java 应用程序

如何使用在Tomcat上运行的servlet进行文件I / O