如何在Tomcat中托管静态文件以及该文件的URL是什么?
问题描述:
这听起来像是一个明显的问题,但事实并非如此。我已经经历了一堆答案,没有人询问或说出该文件的URL。如何在Tomcat中托管静态文件以及该文件的URL是什么?
我希望能够举办.dtd文件,所以我的XML可以像这样引用它:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Somexml SYSTEM "http//:example.com/my.dtd">
<Somexml>
</Somexml>
我试图把我的文件/静态/ 但没有证据表明,Tomcat是托管这个文件。
这些是我已经看过的一些问题。他们没有要求或说明文件的URL,所以这个问题是不是重复: How to serve static content from tomcat https://serverfault.com/questions/143667/how-to-access-a-simple-file-or-folder-from-tomcat-webapps-folder How to serve static files in my web application on Tomcat Simplest way to serve static data from outside the application server in a Java web application https://www.moreofless.co.uk/static-content-web-pages-images-tomcat-outside-war/
答
您可以创建的servlet:
@WebServlet("/images/*")
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getPathInfo().substring(1);
File file = new File(PATH_TO_LIBRARY_WHERE_FILES_ARE_STORED, 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());
}
}
然后链接到文件在这种情况下将是:http://www.yourdomain.com/images/name_of_file.xxx
PATH_TO_LIBRARY_WHERE_FILES_ARE_STORED可以是我在WAR中部署的文件夹吗?所以我可以将所有文件放在一个包中。或者,我是否已将文件上传到每个环境中的服务器,并为PATH_TO_LIBRARY_WHERE_FILES_ARE_STORED使用绝对路径? –
你不需要创建一个Servlet。默认的Servlet将完全做得很好。你所要做的就是让路径和URL正确。 – EJP
@PhilipRego是的,你可以。但要确保你的路线是正确的。 – Milkmaid