我怎样才能访问放在 WEB-INF 文件夹中的文件
Posted
技术标签:
【中文标题】我怎样才能访问放在 WEB-INF 文件夹中的文件【英文标题】:how can i have access to my files that placed in WEB-INF folder 【发布时间】:2012-05-13 07:59:49 【问题描述】:我是 java 新手,遇到了一个奇怪的问题。 我在 WEB-INF 文件夹中创建了一些文件夹(主题、js、css)并将我的文件放到这个文件夹中。 在 index.jsp 中,我通过以下方式使用 css 文件:
<style type="text/css">
<%@include file="WEB-INF/css/style.css" %>
</style>
效果很好。 但在 style.css 文件中,我有一个 div 标签,通过以下方式为标题标签设置背景:
#header
background: url(../theme/violet/header.jpg) repeat-x;
哦。我的问题就在这里。它不起作用。因为其他 css 命令工作得很好。 我知道无法访问 WEB-INF 详细信息,但可能有一种方式类似于我在 index.jsp 页面中用于链接 style.css 的方式。
有什么解决办法吗? 谢谢。
【问题讨论】:
只需在 WEB-INF css 文件夹中添加,就像你做的那样,在这个文件夹中添加 images 文件夹并将 header.jpg 放在那里。您的图像将可用于 style.css - 背景路径: url(images/header.jpg) repeat-x;顺便说一句,此图像将可供外部所有人使用(如果您在 url 中精确路径),但整个文件夹图像或 css 不会,因为它受服务器或应用程序容器(如 tomcat)保护 - 您可以在配置文件中更改它(/conf /web.xml)。 context.xml 中的 Tomcat 也监控了有价值的资源 【参考方案1】:这是不可能的。如果您希望从浏览器直接访问内容,则它不能驻留在 WEB-INF 中。
【讨论】:
你的答案是什么意思。你会说我最常把我的资源文件放在WEB-INF之外?因此我的jsp文件如何访问css文件,但css文件不能访问图像文件?你的回答是通过网络浏览器处理css文件吗? 如果您希望资源(例如 header.jpg)可以被浏览器等客户端访问,则它不能位于 WEB-INF 中【参考方案2】:为什么在WEB-INF
文件夹中创建theme, js, css
? WEB-INF
目录包含有关应用程序的元数据。正常操作时,WEB-INF目录下不需要修改。
您可以直接在war
或WebContent
目录下创建theme, js, css
文件夹,方便在您的jsp页面中使用。
this 链接会帮助你。
【讨论】:
在我读到的一本书中,他为网站提供了一个结构。作者说你把你的css、主题、js和tld放在WEB-INF中很好。当然,他说用户无法访问 WEB-INF 中的所有数据,但网络服务器允许您的类使用它(可能他会说我们的类可以使用它,并非所有此类 jsp 文件的来源,我不知道)。【参考方案3】:从您包含 style.css 的方式来看,我猜您的 index.jsp 位于 WEB-INF 文件夹之外,客户端浏览器可以直接访问该文件夹。包含的 style.css 工作正常的原因是因为它包含在服务器端。但是在 style.css 中,为了获取背景图片,浏览器将启动一个新的连接到恰好位于 WEB-INF 文件夹内的图片,并且服务器拒绝将其发回,你注定要失败。
如果你有一个集中的控制器servlet,你可以把你的jsps放在WEB-INF文件夹中,防止直接访问。您的 servlet 将根据请求参数将所有请求重定向到适当的 jsp。
据我所知,没有绝对的理由将图像、javascript 等放在这个文件夹中,当浏览器需要访问这个文件夹来检索数据时,你肯定会遇到问题。
【讨论】:
以上是关于我怎样才能访问放在 WEB-INF 文件夹中的文件的主要内容,如果未能解决你的问题,请参考以下文章
springmvc 资源在web-inf目录下,怎样加载js静态文件 出现302