0

在 Struts2 应用程序中,任何其他源(图像、css、javascript 文件)都无法检索到浏览器。

例如,我 <img src="myimage.jpg" />在 JSP 页面中添加,但在浏览器中看不到图像。JSP页面和图像存在于web文件夹中,而不是WEB-INF我确定图像存在于给定路径中(我使用Netbeans IDE,它也自动提供路径),我在相关位置手动检查了图像,它是好的。

我不确定这是否是 Struts 的问题(我不这么认为),但我创建了另一个普通的 Java EE 项目,它只有 JSP 页面,没有包含 struts 框架,然后一切正常(调用图像、css、js) . 请任何人告诉我我的错在哪里?提前致谢。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>/org.apache.struts2.dispatcher.FilterDispatcher</welcome-file>
    </welcome-file-list>
    <jsp-config>
        <jsp-property-group>
            <url-pattern>/account.jsp</url-pattern>
            <include-prelude>/header/header.jsp</include-prelude>
        </jsp-property-group>
        <jsp-property-group>
            <display-name>TopBanner</display-name>
            <url-pattern>/*</url-pattern>
            <include-prelude>/header.jsp</include-prelude>
        </jsp-property-group>
    </jsp-config>
        <servlet-name>ItemAction</servlet-name>
        <url-pattern>/ItemAction</url-pattern>
    </servlet-mapping-->
</web-app>
4

2 回答 2

1

如果您的images目录或文件夹位于您的web目录中。做这个

<img src="<%=request.getContextPath()%>/images/myimage.jpg" />

这解决了它

于 2012-07-06T10:24:44.350 回答
1

您必须了解浏览器不知道您的请求是由 servlet 处理的,然后是由 JSP 处理的。当它解析相对路径时,它不会使用 JSP 的路径作为基本路径来解析它们,而是使用调用的 URL 的路径。

例如,如果浏览器地址栏包含以下地址:

http://localhost/app/foo/bar/baz.action

并且生成的 HTML 包含

<img src="myimage.jpg"/>

浏览器将在其中查找图像

http://localhost/app/foo/bar/myimage.jpg

即使生成 HTML 的 JSP 位于 webapp 的根目录中(即在 URL 处http://localhost/app/theJsp.jsp

我建议始终对图像、JS 文件和其他资源使用绝对路径:

<img src="<c:url value='/myimage.jpg'/>"/>
于 2012-07-06T10:22:50.453 回答