我怎样才能访问放在 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, cssWEB-INF 目录包含有关应用程序的元数据。正常操作时,WEB-INF目录下不需要修改。

您可以直接在warWebContent目录下创建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

jsp+servlet怎样防止用户用URL直接访问页面

WEB-INF 目录中的 JSF 文件,我如何访问它们?

Java Web之下载文件

java文件中怎样获取webcontent/web-inf/conf目录下的xml配置文

为啥 WEB-INF 文件夹中的 jsp 文件有效,但放在 WEB-INF 下的文件夹下无效?