圖片存放在項目外部(如 /data/images/),JSP/HTML 需以絕對路徑訪問。三種主流方案各有優劣。
Tomcat server.xml:
<Context docBase="/data/images" path="/images" />
JSP 頁面:<img src="${pageContext.request.contextPath}/images/photo.jpg">
@WebServlet("/img/*")
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
String name = req.getPathInfo().substring(1); // 去掉首個 /
File file = new File("/data/images", name);
if (file.exists()) {
resp.setContentType(getServletContext().getMimeType(name));
Files.copy(file.toPath(), resp.getOutputStream());
} else resp.sendError(404);
}
}
JSP:<img src="img/photo.jpg">
<img src="file:///D:/project/images/photo.jpg">
location /images/ { alias /data/images/; },性能最優。ResourceHandlerRegistry.addResourceHandler("/images/**").addResourceLocations("file:/data/images/")。app.image.root=/data/images,避免硬編碼。選對方案,圖片訪問穩如磐石。