0

Struts2 アプリケーションでは、他のソース (画像、css、javascript ファイル) をブラウザーに取得することはできません。

たとえば <img src="myimage.jpg" />、JSPページに追加しましたが、ブラウザで画像が表示されません。JSPページと画像はwebフォルダーに存在しますWEB-INFが、画像が指定されたパスに存在することは確かです(私はNetbeans IDEを使用しており、パスも自動的に提供されます)、関連する場所で画像を手動で確認しました。わかった。

それがStrutsの問題かどうかはわかりませんが(そうは思いません)、Strutsフレームワークが含まれていないJSPページのみを持つ別の通常のJava EEプロジェクトを作成したところ、すべて正常に機能しました(画像、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

要求がサーブレットによって処理され、次に 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 に答える
1

imagesディレクトリまたはフォルダがディレクトリ内にある場合web。これを行う

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

これで解決

于 2012-07-06T10:24:44.350 に答える