从 WEB-INF 中的 JSP 访问资源 [重复]
Posted
技术标签:
【中文标题】从 WEB-INF 中的 JSP 访问资源 [重复]【英文标题】:Accessing Resources from JSP inside WEB-INF [duplicate] 【发布时间】:2014-06-05 09:28:45 【问题描述】:我无法从存储在 WEB-INF 中的 JSP 访问一些图像和 css 文件。我的 servlet 调用了 JSP,一切正常,但页面找不到图像和 css 文件。我对这种事情很陌生,希望能得到帮助。我知道过去有一些关于此的问题,我已经尝试了这些建议,但我似乎无法理解它。这是JSP的内容(我尝试了很多不同的方法):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="resources/grid.css">
</head>
<body>
<!-- Main container -->
<div class="container_12"></div>
<!-- Foreground container -->
<div class="grid_10 prefix_1 suffix_1">
<img src = "/resources/images/Foreground.png">
</div>
<!-- Header container -->
<div class = "grid 8 prefix_2 suffix_2">
<img src = "$pagecontext.request.contextPath/resources/images/Header.png">
<p>Test</p>
</div>
<div class = "clear"></div>
<!-- Navigation bar container -->
<div class = "grid 8 prefix_2 suffix_2">
<img src = "$pagecontext.request.contextPath/resources/images/Navbar.png">
</div>
</body>
</html>
这是我的目录结构:
http://gyazo.com/0a7aea0a44e51e1789c263767e14a40b
【问题讨论】:
请将该资源文件夹添加到WEB-INF文件夹中,我会工作的 有人告诉我,如果文件位于 WEB-INF 文件夹中,我将无法访问这些文件,这是我最初的尝试,也没有成功。 【参考方案1】:您可以使用下面找到图像的真实路径。
<!-- Header container -->
<div class = "grid 8 prefix_2 suffix_2">
<img src = "<%= application.getRealPath("/resources/images/Header.png") %>">
<p>Test</p>
</div>
【讨论】:
那么当它们位于 WEB-INF 文件夹中时,这是否允许我访问这些文件?您在那里获得的目录引用指向当前目录,然后指向资源,对吗?这意味着资源需要在 WEB-INF 内部?还是客户端不知道 JSP 文件在提供后包含在 WEB-INF 文件夹中? 不,它不允许访问WEB-INF文件中的资源文件。上述解决方案适用于您在问题中提到的目录结构。 哦,我明白了,所以客户端应该相信从 WEB-INF 提供的文件在标准的 WebContent 文件夹中?我现在试试,谢谢。【参考方案2】:将所有文件或 css-images 放在 WEB-INF 文件夹之外。最好的做法是在 WEB-INF 中只放置类和 web.xml。
【讨论】:
以上是关于从 WEB-INF 中的 JSP 访问资源 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
eclipse WEB-INF下文件夹中的jsp文件无法运行