Приветствия.

ал делать веб-приложение с нуля. Раньше я всегда работал над приложениями, которые уже работали в течение долгого времени, поэтому мне не приходилось иметь дело с полной фазой установки. Я использую Spring 3 и Tomcat 6, и я использую Eclipse 3.6

У меня большая проблема с обслуживанием изображений (или другими вещами, отличными от ответов контроллера). На самом деле я не могу найти способ, чтобы мои изображения были в моем jsps. Моя конфигурация работает с:

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

в web.xml и

<bean name="/accise" class="it.jsoftware.jacciseweb.controllers.MainController">

</bean>

для контекста сервлета (плюс другое конечно).

Я прочитал много сообщений здесь и на других форумах об этом:

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

но если я вставлю это в свой servlet-context.xml, я смогу обслуживать изображения, но контроллер «accise» будет недоступен. Я неправильно использую или неправильно понял тег ресурсов? Какой правильный путь?

Обновленное решение найдено !!! :)

Проблема заключалась в том, что мой servlet-config.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">


    <context:component-scan base-package="it.jsoftware.jacciseweb.controllers"></context:component-scan>
    <mvc:annotation-driven />

    <bean
        class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

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

Ответы на вопрос(3)

добавив макрос Spring перед фактической ссылкой на ресурс, чтобы разрешить путь сервлета.

Это не очень хорошо в коде, но это решение делает вас независимыми от фактического контекста, в котором ваше приложение развернуто на сервере и на вашем сервлете. Обычно вы не хотите, чтобы фактический сервлет упоминался в вашем URL.

Например, ссылаясь на ответ ColdStoneJava, это будет:

  <script type="text/javascript" src="<@spring.url '/static/js/jquery-1.4.4.min.js'/>"></script>

Вы также должны ссылаться на него как абсолютный в URL, поэтому косая черта «/ ...» имеет важное значение.

Это не будет работать в моем опыте:

  <script type="text/javascript" src="<@spring.url 'static/js/jquery-1.4.4.min.js'/>"></script>

Приветствия.

Решение Вопроса

<mvc:resources> хорошо работает с аннотированными контроллерами, но может потребовать некоторой дополнительной конфигурации с другими типами отображений контроллеров.

Я думаю, в вашем случае вам нужно объявитьBeanNameUrlHandlerMapping вручную (обычно это регистрируется по умолчанию, но<mvc:resources> переопределяет значения по умолчанию как побочный эффект применения собственной конфигурации):

<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
 gotch424 янв. 2011 г., 18:02
при этом изображения работают, но Spring не находит сопоставление для контроллера (которое он находит без тега ресурсов). <context: component-scan base-package = "it.jsoftware.jacciseweb.controllers"> </ context: component-scan> <mvc: resources mapping = "/ resources / **" location = "/ resources /" /> <bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
 sourcedelica03 мая 2011 г., 10:21
Боже, какая боль ... Весной это надо обязательно регистрировать как ошибку.
 axtavt24 янв. 2011 г., 18:18
@ gotch4: покажи свойMainController.
 sourcedelica03 мая 2011 г., 10:38
 axtavt03 мая 2011 г., 10:51
@erucacm: я не верю, что это ошибка. В основном, это поведение с переопределением значений по умолчанию описано вDispatcherServletага, Кроме того, он не наносит вред аннотированным контроллерам, а только контролерам, отображаемым по имени компонента.

используя полный путь, как для

CSS

<link rel="stylesheet" type="text/css" media="screen" href="/my-web-app/resources/css/smoothness/jquery-ui-1.8.21.custom.css">

и для JavaScript

<script type="text/javascript" src="/my-web-app/static/js/jquery-1.4.4.min.js"></script?

Дайте мне знать, если это решит вашу проблему, прежде чем Spring предложит лучший подход.

Ваш ответ на вопрос