Смешивание Spring- MVC кеша с помощью Struts 1 - PullRequest
0 голосов
/ 28 марта 2020

Я пытался применить технику уничтожения кеша ресурсов Spring- MVC stati c (js / css) (успешно используется в новом проекте Spring- MVC) для старых стоек 1 система (с некоторой весны). т.е. добавление md5 ha sh к ресурсам (spring / path / main- [md5hash]. js vs /path/to/js/main.js)

Настройка:

  1. Добавление пружины - mvc в pom. xml
  2. Добавление записей пружины - mvc сервлет-диспетчера в сеть. xml
  3. Добавление сети пружины. xml - не уверен, если какой-либо из них не требуется
  <bean id="cacheManager" name="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
    <property name="caches">
      <set>
        <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
              name="resources"/>
      </set>
    </property>
  </bean>

  <mvc:resources mapping="/resources/**" location="/path/to/js/" />

  <mvc:resources mapping="/res/**" location="/path/to/js/">
    <mvc:cache-control cache-public="true" max-age="31536000" />
    <mvc:resource-chain resource-cache="true">
        <mvc:resolvers>
            <bean class="org.springframework.web.servlet.resource.CachingResourceResolver">
                <constructor-arg ref="cacheManager" />
                <constructor-arg value="resources" />
            </bean>
            <mvc:version-resolver>
                <mvc:content-version-strategy patterns="/**"/>
            </mvc:version-resolver>
        </mvc:resolvers>
        <mvc:transformers>
            <bean class="org.springframework.web.servlet.resource.CachingResourceTransformer">
                <constructor-arg ref="cacheManager"/>
                <constructor-arg value="resources" />
            </bean>
            <bean class="org.springframework.web.servlet.resource.CssLinkResourceTransformer">
                <!--<property name="allowedLocations" value="/static"> </property>-->
            </bean>
        </mvc:transformers>
    </mvc:resource-chain>
  </mvc:resources>
Создание taglibs
    // function (HtmlFunctions.getForLookupPath) - method for generating path to js file with md5 hash
    public static String getForLookupPath(String src) {
        ResourceUrlProvider resourceUrlProvider = SpringContext.getBean(ResourceUrlProvider.class);
        return resourceUrlProvider.getForLookupPath(src);
    }
    <!-- jsp tag (js.tag) - this tag calls above function and generates the <script> tag with correct path to js file -->
    <script src="<spring:url value="${fnc:getForLookupPath(src)}" />"></script>
    <!-- Call js.tag in page.jsp -->
    <p:js src="/res/main.js"/>

Вот самое близкое, что я заставил его работать:

в сети. xml:

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

в Spring-Web. xml:

    <mvc:resources mapping="/res/**" location="/path/to/js/">

на странице. jsp:

    <p:js src="/res/main.js"/>

В приведенном выше примере путь генерируется на странице. jsp - это [BASEPOWERPAY] / res / main- [md5hash]. js

  • при вводе этого в браузере возникает ошибка 404. Тем не менее, библиотека может четко найти файл, так как она может вычислить и добавить правильные значения ha sh
  • При воспроизведении сгенерированного URL-адреса я обнаружил, что этот путь работает в браузере: [BASEURL] / mvc /res/main-[md5hash].js
  • Таким образом, существует разрыв между генерируемым URL и действующим URL.

Вот все комбинации, которые я Пробовал:

  • Случай 1

    • web. xml - mvc -диспетчер URL-шаблона - [/ *]
    • FAIL - странно, это переопределяет все URL-адреса сервлетов (например, / Logon). Я думал, что используются самые конкретные c URL сервлета
  • Случай 2

    • web. xml - mvc -dispatcher url-pattern - [/]
    • FAIL - странно, это переопределяет все URL-адреса сервлетов (например, / Logon). Я думал, что используются самые конкретные c URL сервлета
  • Случай 3

    • web. xml - mvc -dispatcher url-pattern - [/ mvc / *]
    • spring-web. xml - сопоставление ресурсов - [/ res / **]
    • page. jsp - sr c - [/res/main.js]
      • сгенерировано [BASEURL] / res / main- [md5hash]. js - ошибка 404
    • [BASEURL] / mvc / res / main- [md5hash]. js работает
  • Дело 4

    • web. xml - mvc шаблон URL-адреса диспетчера - [/ mvc / *]
    • spring-web. xml - сопоставление ресурсов - [/ res / ** ]
    • стр. jsp - sr c - [/mvc/res/main.js]
      • URL не создан (неизвестно)
    • [BASEURL] / mvc / res / main- [md5hash]. js работает
  • Дело 5

    • web. xml - mvc шаблон URL-адреса диспетчера - [/ mvc / *]
    • spring-web. xml - сопоставление ресурсов - [/ mvc / res / **]
    • URL не создан (неизвестно)
  • [BASEURL] / mvc / mvc / res / main- [md5hash]. js работает

Дело 6

  • web. xml - mvc шаблон URL-адреса диспетчера - [/ mvc / *]
  • spring-web. xml - отображение ресурсов - [/ mvc / res / ** ]
  • стр. jsp - sr c - [/mvc/res/main.js]
    • сгенерировано [BASEURL] /mvc/res/main.js - ошибка 404
  • [BASEURL] / mvc / mvc / res / main- [md5hash]. js работает

Дело 7

  • web. xml - mvc - шаблон URL-адреса диспетчера - [/ mvc /]
  • spring-web . xml - сопоставление ресурсов - [/ res / **]
  • стр. jsp - sr c - [/res/main.js]
    • сгенерированный [BASEURL] / res / main- [md5hash]. js - ошибка 404
  • не удается найти работающий URL

Спасибо всем кто смотрит

...