Обслуживание статического контента с помощью Spring 3 - PullRequest
11 голосов
/ 27 июля 2011

Я пытаюсь использовать функцию сопоставления ресурсов в Spring 3, и она, похоже, не работает.Вот что у меня есть:

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

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

в моем web.xml

, затем в моем aaa-servlet.xml у меня есть следующее:

<resources mapping="/resources/**" location="/resources/" />

I 'Доступ к содержимому в jsp выглядит следующим образом:

<link href="<c:url value="/resources/css/blueprint/screen.css" />" rel="stylesheet" type="text/css">

Все, что я читал, говорит о том, что у меня все настроено правильно, но оно не работает.Я использую сервер weblogic и при запуске он отображает папку / resources /.

Любая помощь будет с благодарностью!

aaa-servlet.xml в целом:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />



<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/jsps directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/jsps/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

<beans:bean id="messageSource"  
    class="org.springframework.context.support.ResourceBundleMessageSource">  
    <beans:property name="basename" value="messages"/>  
</beans:bean>  

<!-- Imports user-defined @Controller beans that process client requests -->
<beans:import resource="controllers.xml" />

controllers.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!-- Scans within the base package of the application for @Components to configure as beans -->
<context:component-scan base-package="com.app.controller" />

Журнал запуска:

INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'

Ответы [ 3 ]

4 голосов
/ 28 июля 2011

Вы сопоставляете свое приложение с корневым контекстом, поэтому вам, вероятно, следует включить

<mvc:default-servlet-handler/>

в конфигурацию mvc.Взгляните на 15.12.5 в spring docs .Я не смог заставить работать mvc: resources без этой настройки, когда мой сервлет-диспетчер был сопоставлен с /.По крайней мере, это то, что я, кажется, помню, что делал, когда я настроил это пару месяцев назад в своем проекте.

1 голос
/ 27 июля 2011

Попробуйте заменить <resources mapping="/resources/**" location="/resources/" />

на

<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" />
0 голосов
/ 02 августа 2011

Исправлено!

Похоже, есть ошибка в ResourceHttpRequestHandler, которая появляется только с Weblogic.

Чтобы исправить проблему:

Удалить

<resources mapping="/resources/**" location="/resources/"/>

Добавить

<default-servlet-handler/>

Я знаю, что некоторые из вас предлагали использовать обработчик сервлета по умолчанию, но для его работы необходимо удалить сопоставление ресурсов!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...