0

J'ai une application Spring Web MVC et je souhaite utiliser des URL RESTful. Malheureusement, je n'ai trouvé aucune configuration qui fonctionne pour moi avec UrlRewriteFilter de Tuckey. J'utilise le "DefaultAnnotationHandlerMapping" et j'ai ajouté "urlrewritefilter.jsp" à mon classpath et j'ai copié "urlrewrite.xml" dans "/ WEB-INF /".Problèmes avec Tuckey UrlRewriteFilter et Spring 3 Web MVC

Je ne voulais pas que xyz: //www.domain.com/abc soit redirigé (invisible pour l'utilisateur) vers xyz: //www.domain.com/app/abc pour l'attraper avec mon Contrôleur et laisser xyz: //www.domain.com/css intacte.

Mon "web.xml" est configuré de cette façon:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="xyz://java.sun.com/xml/ns/javaee" xmlns:xsi="xyz://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xyz://java.sun.com/xml/ns/javaee xyz://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

<!-- Context --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/applicationContext.xml 
      /WEB-INF/applicationContext-security.xml 
     </param-value> 
    </context-param> 

<!-- Context Loader --> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- Spring Security --> 
    <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>/*</url-pattern> 
    </filter-mapping> 

<!-- Tuckey UrlRewriteFilter --> 
<filter> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<!-- Dispatcher Servlet --> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
    </servlet-mapping> 

<!-- All the rest... --> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Mon "urlrewrite.xml" est configuré de cette façon:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" 
     "xyz://tuckey.org/res/dtds/urlrewrite3.2.dtd"> 

<urlrewrite default-match-type="wildcard"> 
<rule> 
    <from>/**</from> 
    <to>/app/$1</to> 
</rule> 
<outbound-rule> 
    <from>/app/**</from> 
    <to>/$1</to> 
</outbound-rule> 
</urlrewrite> 

Mon AbcController.java pour mapper xyz: //www.domain.com/abc a des méthodes telles:

@RequestMapping(value = "/app/abc", method=RequestMethod.GET) 
public void displayRegistration(Model model) 
{ 
... 
} 

Mais je reçois toujours "état HTTP 404" lorsque vous essayez d'accéder xyz: //www.domain.com/ ou xyz: //www.domain.com/abc :-(

Il serait très bien si quelqu'un pouvait aider.

Salutations

Benny

+0

post-scriptum J'ai dû remplacer http: // avec xyz: // à cause de Stack Overflows Spam-Protection. * oO * –

Répondre

1

Avez-vous essayé avec

@RequestMapping(value = "/abc", method=RequestMethod.GET) 
1

réponse vraiment en retard.

Vous devez ajouter les symboles de regroupement (. *)

<urlrewrite > 
    <rule> 
     <from>^/(en|de)/(.*)$</from> 
     <to >/$2?lang=$1</to> 
    </rule> 
</urlrewrite>