RIPOSO MVC a molla:file statici inaccessibili a causa del modello URL
-
20-09-2019 - |
Domanda
Il modello URL del mio servlet Spring Dispatcher è /* (come suggerisce Spring MVC REST)
Ora tutte le richieste vengono risolte da questo servlet.anche CSS/JS/Immagini vengono risolti e gestiti dal servlet..
Quindi, Spring MVC tenta di trovare il controller..:(
Come aggirare questo?Esiste una soluzione standard a questo problema??
& Non voglio cambiare il modello url in /rest/* (quindi, altre risorse statiche sono accessibili da /css/ o /js ecc.)
Soluzione
Puoi mappare i tuoi controller su un insieme più piccolo di URL (ad es./app/*), quindi riscrivi gli URL che i tuoi utenti effettivamente vedono in modo che non ne vengano nemmeno a conoscenza.Dai un'occhiata a l'esempio di webapp mvc-basic, in particolare web.xml e urlrewrite.xml per vedere come viene eseguito.
Altri suggerimenti
Mappare il dispatcher Spring su alcune sottosezioni dello spazio URL e utilizzare Tuckey per riscrivere gli URL con cui l'utente ha a che fare.
http://www.example.org/app/controller/action -> http://www.example.org/controller/action
Solo un aggiornamento in merito a questo:la configurazione di riscrittura predefinita definita nell'esempio di primavera non ha funzionato immediatamente per me.Le regole di riscrittura per fogli di stile, script, ecc.venivano ancora elaborati dalla regola /app/* e successivamente gestiti dal file DispatchServlet
, il che non è auspicabile.
Ho dovuto aggiungere il last="true"
attributo alle regole di stili/script/immagini per indicare che altre regole non dovrebbero essere applicate e ho dovuto utilizzare la macro URL di FreeMarker Spring in qualsiasi percorso di inclusione CSS/JS.
Nel caso in cui qualcuno riscontri lo stesso problema.