首页 > 解决方案 > Spring MVC 3.1.1 外部资源不起作用

问题描述

我在映射外部资源时遇到问题。具体来说,在我的 app-servlet.xml 中,我有以下内容:

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

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
   <property name="cookieName" value="lang"/>
   <property name="defaultLocale" value="en"/>
</bean>
<mvc:interceptors>
   <mvc:interceptor>
      <mvc:mapping path="/**"/>
      <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
         <property name="paramName" value="lang"/>
      </bean>
   </mvc:interceptor>
</mvc:interceptors>

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="file:C:/Users/username/Desktop/translations/translation"/>
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
   <property name="messageConverters">
      <array>
         <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/>
         </bean>
      </array>
   </property>
</bean>

<mvc:resources mapping="/content/**" location="file:C:/Users/username/Desktop/content/"/>
<!--    <mvc:default-servlet-handler/>-->
<mvc:annotation-driven/>

我的 web.xml

<servlet>
        <servlet-name>app</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>/</url-pattern>
</servlet-mapping>

我尝试了任何可能的组合,也尝试了使用和不使用,<mvc:default-servlet-handler/>但是当我尝试使用外部资源访问页面时,我在浏览器的“网络”选项卡中看到应用程序返回 200,但未加载内容。

我在 ResourceHttpRequestHandler 类中添加了一个断点,并显示了setLocations(List<Resource> locations)在启动时调用的方法,但是handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException当我尝试从例如加载内容时没有调用该方法http://localhost:8080/app/content/testImage.png

日志也没有提出任何建议。

我还尝试通过 Tomcat server.xml 映射外部位置,但没有结果。

任何想法为什么会发生这种情况?

标签: javaspringspring-mvc

解决方案


推荐阅读