1

Spring 3 MVC プロジェクトで画像を表示できません。エラーが見つからず、多くのチュートリアルを読んでいます。私のコードは次のとおりです。

ディスパッチャーサーブレット

<mvc:annotation-driven />
<mvc:resources location="/resources/" mapping="/resources/**"/>

<context:property-placeholder location="classpath:jdbc.properties" />
<context:component-scan base-package="com.barrancofv" />
<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
    </bean>

    <bean id="localeChangeInterceptor"
    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
    </bean>

    <bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="es"/>
    </bean>

    <bean id="handlerMapping"
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
        <ref bean="localeChangeInterceptor" />
    </property>
    </bean>    

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>mymessages</value>
            <value>messages</value>
        </list>
    </property>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${database.driver}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.user}" />
    <property name="password" value="${database.password}" />
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="annotatedClasses">
    <list>
        <value>com.barrancofv.model.Empleado</value>
        <value>com.barrancofv.model.Documento</value>
    </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        </props>
    </property>
    </bean>

    <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>     

web.xml

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<listener>
<listener-class>
    org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
    /WEB-INF/dispatcher-servlet.xml,
    /WEB-INF/spring-security.xml
</param-value>
</context-param>

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
    org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>

<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

Security.xml

<http use-expressions="true">
    <!-- intercept-url seguridad de flujo de paginas -->
    <intercept-url pattern="/welcome" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*/" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*/*" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*/*/" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*/*/*" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*/*/*/" access="ROLE_USER" />
    <intercept-url pattern="/welcome/*/*/*/*" access="ROLE_USER" />
    <intercept-url pattern="/resources/**" access="permitAll" />
    <form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/loginfailed" />
    <logout logout-success-url="/logout" />
</http>

私のlogin.jspで

私の画像を置くために、私はこれを使用します:

<img src="<c:url value="/resources/img/a.jpg" alt="" />

私の構造は次のとおりです。

src/main/resources/images/a.jpg

エラーが見つかりません。ありがとう!!!

4

3 に答える 3

0

ウシャが指摘した問題は部分的に正しい。リソースを、通常のリソースとは異なるwebResourceとしてsrc/main/webapp/resources追加できるpomのORに移動することをお勧めします。src/main/resources

次に、/resources/images/...Webリソースは/ resourcesディレクトリ内ではなく、Webアプリケーションのルートに配置されるため、JSPで参照することはありません。

最後に、DispatcherServletをルートコンテキスト(/)にマップします。リソースを提供するには、default-servlet-handlerを構成する必要があります。また、リソースの提供について説明しているため、そのドキュメントの前のセクションを読むことをお勧めします。

xml構成では、次のように簡単にする必要があります

<mvc:default-servlet-handler/>
于 2013-01-18T17:25:13.400 に答える
0

フォルダresourcesからピックアップしていると思います。webapp

resourcesからsrc/main/resources/に変更して、src/main/webapp/resources/それが機能するかどうか試してみてください。

于 2013-01-18T17:00:29.477 に答える
0

プロジェクト構造と一致するように、Spring 構成でリソース ハンドラーを構成する必要があります。

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources -->
<mvc:resources 
        mapping="/resources/** 
        location="/images/, classpath:/META-INF/web-resources/" />

また、ログインせずにこの画像にアクセスできるように (ログイン ページに表示するため)、セキュリティを構成する必要があります。

 <security:intercept-url pattern="/resources/**" access="permitAll" />
于 2013-01-18T14:12:52.877 に答える