2010-01-26 11 views

risposta

4

Il modo corretto per farlo è creare una sottoclasse di HttpServletRequestWrapper, sovrascrivere il suo getRequestURI() e altri metodi per restituire il nuovo URL e avvolgere la richiesta con esso. Quindi non devi modificare gli altri mapping dei filtri.

3

ma questo lo rende così che tutti gli altri filtri della catena non vengono chiamati.

Basta riconfigurare gli altri filtri per ascoltare il nuovo url-pattern.

+0

l'altro filtro di cui parlo è mappato a/*. Ma ho scoperto che posso aggiungere un FORWARD alla mappatura del filtro e che viene richiamato. – Kyle

+0

E anche questo sì. Bene, l'hai trovato da solo. – BalusC

3

Perché scrivere da soli quando si hanno già molte opzioni ben scritte? È possibile utilizzare Tuckey filtro URL-rewrite, ma vorrei anche avere uno sguardo OCPsoft PrettyFaces o OCPsoft Riscrivere per questo:

Con PrettyFaces:

creare WEB-INF/pretty-config.xml

<url-mapping> 
    <pattern value="/#{username}" /> 
    <view-id value="/profile.jsp" /> 
</url-mapping> 

Inserisce automaticamente il valore dell'URL "nome utente" nel parametro di richiesta denominato "nomeutente" e nasconde l'URL originale e lo sostituisce con quello nuovo nei collegamenti nelle pagine HTML.

Con Rewrite:

qui è la stessa cosa usando Rewrite, che è un po 'più esplicito, ma anche più potente e configurabile.

ConfigurationBuilder.begin() 
    .addRule(Join.path("/{username}").to("/profile.jsp") 
       .where("username").bindsTo(Request.parameter("username"))); 

Spero che questo aiuti.

~ Lincoln

Problemi correlati