Handhabung kontext Weg Refs, wenn „/“ Site Java EE Verpackungs Migration
-
02-07-2019 - |
Frage
Eine bestehende Java-Website ist so konzipiert, unter „/“ auf tomcat und es gibt viele spezifische Hinweise auf feste absolute Pfade wie „/ dir / dir / Seite“.
laufenMöchten Sie diese auf Java EE Verpackung migrieren, wo die Website unter einer kontext root ausführen müssen z.B. "/ Dir / dir / Seite" wird "/ my-context-root / dir / dir / Seite"
Nun kann der Kontext-root leicht mit ServletRequest.getContextPath (), aber das bedeutet noch viele Code-Änderungen eine große Code-Basis zu migrieren. Die meisten dieser Referenzen sind in wörtlichen HTML.
Ich habe mit der Verwendung von Servlet-Filter experimentieren Schreibungen auf dem oubound HTML zu tun, und das scheint gut zu funktionieren. Aber es einführt einigen Aufwand, und ich würde es als eine dauerhafte Lösung nicht sehen. (Siehe EnforceContextRootFilter-1.0-src.zip für den Servlet-Filter-Ansatz).
Gibt es bessere Ansätze zur Lösung dieses Problems? Alles, was offensichtlich fehle ich? Alle Kommentare zu schätzen!
Lösung
Überprüfen Sie ein verwandtes Frage aus
Sehen Sie sich auch URLRewriteFilter
Eine andere Sache (ich immer die Bearbeitung dieses verflixte post). Wenn Sie JSP verwenden (im Vergleich zu statischen HTML oder etwas anderes) Sie könnten auch eine Tag-Datei erstellen, um die gemeinsamen HTML-Tags mit Links (insbesondere a, img, Form) zu ersetzen. So Link können geworden
Diese Änderung kann leicht "en masse" getan werden, so etwas wie sed verwendet wird.
sed -e 's/<a/<t:a/g' -e 's/<\/a>/<\/t:a>/g' old/x.jsp > new/x.jsp
Formular Aktionen kann ein bisschen schwieriger als sed, aber Sie bekommen die Idee.
Andere Tipps
die Apache-Welt verwendet Redirects (mod_rewrite) das gleiche zu tun.
Die Servlets Welt gestartet Filter mit
Der Rubin Welt (oder der RoR) macht mehr aus dem gleichen Stoff und sie nennen es das Routing.
Es gibt also kein Weg daran vorbei (Es sei denn, Sie klug regex durch out nutzen möchten - das versucht wurde, und es funktioniert gut)
.