18.02.2008
Sprechende URLs mit Java
Die meisten meiner Webanwendungen haben, zumindest sofern sie mit HTTP GET arbeiten relativ kryptische URLs, die sich letztlich auf Datenbankschlüssel, Suchparameter und ähnliches zurückführen lassen. Das sieht zwar nicht unbedingt schön aus, hat aber bisher ganz gut funktioniert.
Leider scheinen da gegen nicht nur einige Benutzer sondern auch ne ganze Menge Internet Suchmaschineen eine Abneigung zu haben, so dass ich versucht habe das zu ändern, möglichst ohne komplette Anwendungen neu zu schreiben. Die Standardlösung für mich ist mod_rewrite in einen vorgeschalteten Apache einzubinden und zu konfigurieren. Das funktioniert, erfordert aber das ich vor meinen lokalen Tomcat nen Apache httpd schalte, wo mir erst mal der Aufwand zu hoch war. Also habe ich nach einer reinen Java Lösung gesucht und bin fündig geworden.
Der UrlRewriteFilter liefert als Servlet Filter sowohl die Möglichkeit ausgehende URLs nach einem bestimmten Muster (auf Basis von Regulären Ausdrücken) zu parsen, als auch eingehen URLs entsprechend einer Konfigurationsdatei umzuändern.
Positiver Nebeneffekt der reinen Java Lösung, ist dass Servlet Filter natürlich nicht nur Zugriff auf URLs und Parameter sondern auch auf den ServletContext und die HTTP Session haben. Dadurch kann man sehr schön jedem Link bestimmte Session Parameter (z.B. die aktuelle Sprache oder andere Einstellungen übergeben). Die so erzeugten Links sind dann mehr oder minder Stateless und können problemlos gebookmarkt oder auch weitergegeben werden.