首页 > 解决方案 > 访问 WEB-INF 文件夹中的网站背景和其他装饰图像

问题描述

我正在尝试使用一些图像来装饰我的网站。但我无法访问那些放在 WEB-INF 文件夹中的图像。我的代码如下所示:

<img id="welcomeGIF" src="/MyCourses/WebContent/WEB-INF/css/welcome.gif " class="ribbon"/>

如果我只是将它们放在 WebContent 目录下的 WEB-INF 文件夹之外,访问这些图像就没有问题。我想知道我做错了什么?我是 web 应用程序开发的新手,所以我不确定是否所有的 css 文件都应该放在 WEB-INF 中。如果是这样,我如何访问它们?

这是我的程序的结构:

在此处输入图像描述

标签: javahtmljspweb-applicationsweb-deployment

解决方案


原因:

  1. WEB-INF目录下的资源有规则不能通过url访问(客户端)
  2. 因此,当 html 加载时, html 标签将向服务器发送请求(到 url MyCourses/WebContent/WEB-INF/css/welcome.gif),而资源在 WEB-INF 目录中,因此您无法访问它;

怎么解决

  1. java程序员可以访问web-inf目录,所以你可以使用Dispatch request api

网络:

<img id="welcomeGIF" src="/MyCourses/getWelcome" class="ribbon"/>

java程序员(FileAccess.class)

request.getRequestDispatcher("/WEB-INF/css/welcome.gif").forward(request,response);

web.xml

<servlet>
    <servlet-name>getGif</servlet-name>
    <servlet-class>FileAccess</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>getGif</servlet-name>
<url-pattern>/getWelcome</url-pattern>
  1. 把静态文件放到Web-inf目录之外,(虽然安全性不如以前,但可以这样做)
  2. 如果你使用 springMvc 框架,你可以使用 mvc:resources 配置来设置直接访问静态文件

推荐阅读