我有以下疑问。我有一个 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] 删除。
我来说两句