我是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的方式。
任何解决方案? 感谢。
答案 0 :(得分:2)
从包含style.css的方式来看,我猜你的index.jsp在WEB-INF文件夹之外,可以由客户端浏览器直接访问。包含style.css正常工作的原因是因为它包含在服务器端。但是在style.css中,为了获得背景图像,浏览器将启动一个新的连接到图像,该图像恰好位于WEB-INF文件夹内,服务器拒绝将其发送回来,你注定要失败。
如果您有集中控制器servlet,则可以将jsps放在WEB-INF文件夹中以防止直接访问它。您的servlet会根据请求参数将所有请求重定向到适当的jsp。
据我所知,没有绝对的理由将图像,JavaScripts等放在此文件夹中,当浏览器需要访问此文件夹以检索数据时,您肯定会遇到问题。
答案 1 :(得分:1)
这是不可能的。如果您希望从浏览器直接访问内容,则它不能驻留在WEB-INF中。
答案 2 :(得分:0)
为什么要在theme, js, css
文件夹中创建WEB-INF
? WEB-INF
目录包含有关应用程序的元数据。在正常操作期间,您不需要修改WEB-INF目录下的任何内容。
您可以直接在theme, js, css
或war
目录下创建WebContent
文件夹,它可以在您的jsp页面中轻松使用。
this链接可以帮助您。