2017-05-13 6 views
0

Ich stehe vor einem sehr seltsamen Problem. Ich arbeite an einer webbasierten SpringMVC-App und leite jede einzelne URL zu meinem FrontController um, der ein DispatcherServlet ist.Spring-Servlet findet keine Ressourcen beim Zugriff mit hinterem Backslash

Ich habe kürzlich festgestellt, dass alles funktioniert, wenn ich auf URLs ohne einen abschließenden Backslash zugreife. Zum Beispiel lokal arbeiten, wenn ich auf http://localhost:8080/aprv zugreifen alle statischen Ressourcen sind perfekt geladen. enter image description here Aber wenn ich auf http://localhost:8080/aprv/ zugreifen, scheinen statische Ressourcen zu fehlen. enter image description here

Lesen Chrome Konsole kann ich sehen, was das Problem ist: enter image description here

Es ist das Hinzufügen/APRV/preffix zum vollständigen Ressourcenpfad. So

wenn ich verwende/APRV Ressourcen sind "/resources/template/images/feature/ENflag.jpg"

Aber bei der Verwendung von/APRV/Ressourcen werden „/ APRV/resources/template/images/feature/ENflag.jpg/"

Warum passiert das? Wie könnte ich es lösen?

Hier ist meine app-config.xml wo mvc: Ressourcen deklariert ist:

<?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:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:mongo="http://www.springframework.org/schema/data/mongo" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/data/mongo 
     http://www.springframework.org/schema/data/mongo/spring-mongo.xsd"> 

    <bean id="authenticator" class="es.unileon.ulebankoffice.domain.Authenticator" 
     scope="singleton"> 
    </bean> 

    <bean id="handlerMapping" 
     class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
     <property name="alwaysUseFullPath" value="true"></property> 
    </bean> 

    <bean id="datastore" class="es.unileon.ulebankoffice.domain.Datastore" 
     scope="singleton"> 
    </bean> 

    <bean id="messageSource" 
     class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basename" value="classpath:messages" /> 
     <property name="fileEncodings" value="UTF-8" /> 
     <property name="defaultEncoding" value="UTF-8" /> 
    </bean> 

    <!-- Scans the classpath of this application for @Components to deploy as 
     beans --> 
    <context:component-scan base-package="es.unileon.ulebankoffice.web" /> 
    <context:component-scan base-package="es.unileon.ulebankoffice.security" /> 

    <mvc:annotation-driven /> 

    <mvc:default-servlet-handler /> 

    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView"></property> 
     <property name="prefix" value="/WEB-INF/views/"></property> 
     <property name="suffix" value=".jsp"></property> 
    </bean> 
    <bean id="localeResolver" 
     class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
     <property name="defaultLocale" value="es" /> 
     <property name="cookieName" value="ULeBankLanguagePreference"></property> 
     <property name="cookieMaxAge" value="604800"></property> 
    </bean> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <mvc:resources mapping="resources/**" location="/resources/" /> 

    <mvc:interceptors> 
     <bean id="localeChangeInterceptor" 
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
      <property name="paramName" value="language" /> 
     </bean> 
    </mvc:interceptors> 
    <mongo:template db-factory-ref="mongoDBFactory" 
     write-concern="FSYNC_SAFE" /> 

    <mongo:db-factory id="mongoDBFactory" dbname="ulebankoffice" 
     mongo-ref="mongoClient" /> 

    <mongo:mongo-client id="mongoClient" 
     credentials="++++"> 
     <mongo:client-options connect-timeout="5000" /> 
    </mongo:mongo-client> 

    <mongo:repositories base-package="es.unileon.ulebankoffice.repository" /> 
</beans> 

Hier ist meine web.xml:

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 

    <!-- location of log4j config file --> 
    <context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/logging.properties</param-value> 
    </context-param> 

    <!-- applies log4j configuration --> 
    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:app-config.xml,classpath:security-config.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>inicio</servlet-name> 
     <jsp-file>/index.jsp</jsp-file> 
    </servlet> 
    <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>/o/*</url-pattern> 
    </filter-mapping> 

    <servlet> 
     <servlet-name>FrontalController</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:app-config.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>FrontalController</servlet-name> 
     <url-pattern>/*.htm</url-pattern> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>inicio</welcome-file> 
    </welcome-file-list> 

    <jsp-config> 
     <jsp-property-group> 
      <url-pattern>*.jsp</url-pattern> 
      <page-encoding>UTF-8</page-encoding> 
     </jsp-property-group> 
    </jsp-config> 
</web-app> 

Danke für Ihnen helfen.

+0

in Ihrer app-config.xml, haben Sie versucht, die zweite Zeile von hier zu entfernen: ? –

+0

Ja. Ich habe viele Kombinationen ausprobiert, Ressourcen-Mapping hinzugefügt und entfernt, aber es scheint nicht zu funktionieren. @CosminConstantinescu – Razvi

+1

Sie verwenden wahrscheinlich relative Pfade in Ihrer HTML-Datei. Nicht. Verwenden Sie absolute Pfade. –

Antwort

0

Wie @ JBNizet in einem Kommentar erwähnt, war es ein relatives Pfadproblem.

Sobald ich "resources/.../..." zu "/resources/.../..." änderte, ging alles in Ordnung.

Vielen Dank!