Gestion des références de chemin de contexte lors de la migration du site "/" vers un package Java EE

StackOverflow https://stackoverflow.com/questions/142965

  •  02-07-2019
  •  | 
  •  

Question

Un site Java existant est conçu pour s'exécuter sous " / " sur tomcat et il existe de nombreuses références spécifiques aux chemins absolus fixes tels que "/ dir / dir / page".

Vous souhaitez migrer cela vers un package Java EE, où le site devra être exécuté sous une racine de contexte, par exemple. " / dir / dir / page " devient "/ mon-contexte-racine / rép / rép / page"

Désormais, la racine de contexte peut être facilement utilisée avec ServletRequest.getContextPath (), mais cela signifie néanmoins que de nombreuses modifications de code sont nécessaires pour migrer une base de code volumineuse. La plupart de ces références sont en HTML littéral.

J'ai déjà utilisé des filtres de servlet pour réécrire le code HTML sortant, et cela semble bien fonctionner. Mais cela introduit des frais généraux, et je ne le verrais pas comme une solution permanente. (voir EnforceContextRootFilter-1.0-src.zip pour l’approche du filtre de servlet).

Existe-t-il de meilleures approches pour résoudre ce problème? Quelque chose d'évident me manque? Tous les commentaires sont appréciés!

Était-ce utile?

La solution

Consultez une question associée

Prenez également en compte URLRewriteFilter

Autre chose (je continue à éditer ce sacré post). Si vous utilisez JSP (versus HTML statique ou autre chose), vous pouvez également créer un fichier de balise pour remplacer les balises HTML courantes par des liens (notamment un formulaire, img,). Donc, un

Ce changement peut être facilement effectué "en masse", en utilisant quelque chose comme sed.

sed -e 's/<a/<t:a/g' -e 's/<\/a>/<\/t:a>/g' old/x.jsp > new/x.jsp

Les actions de formulaire peuvent être un peu plus délicates que sed, mais vous avez l’idée.

Autres conseils

le monde apache a utilisé les redirections (mod_rewrite) pour faire de même.

Le monde des servlets a commencé à utiliser des filtres

Le monde ruby ??(ou le RoR) fait plus de choses identiques et les appelle routage.

Donc, vous ne pouvez pas vous en écarter (à moins que vous ne souhaitiez utiliser une regex intelligente - ce qui a été essayé et qui fonctionne parfaitement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top