gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:39:42 24 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

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

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

最佳答案

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

使用:

youraddress.xxx/images/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());
}

}

关于java - 如何使用在 Tomcat 服务器中运行的 JavaEE 应用程序从文件夹中检索图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47549344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com