2017-10-11 25 views
0

这听起来像是一个明显的问题,但事实并非如此。我已经经历了一堆答案,没有人询问或说出该文件的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/

回答

0

您可以创建的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

+0

PATH_TO_LIBRARY_WHERE_FILES_ARE_STORED可以是我在WAR中部署的文件夹吗?所以我可以将所有文件放在一个包中。或者,我是否已将文件上传到每个环境中的服务器,并为PATH_TO_LIBRARY_WHERE_FILES_ARE_STORED使用绝对路径? –

+0

你不需要创建一个Servlet。默认的Servlet将完全做得很好。你所要做的就是让路径和URL正确。 – EJP

+0

@PhilipRego是的,你可以。但要确保你的路线是正确的。 – Milkmaid

相关问题