Fehlerseiten in einer Java Web-Applikation
Ich zeige euch wie man Fehlerseiten in einer Java Web-Applikation anlegen kann. Standardmäßig sind in einer Java Web-Applikation keine Fehlerseiten definiert. Während der Entwicklung bietet das den Vorteil, dass man schnell einen Fehlerausgabe hat und mit dem Stacktrace auch sieht, wo der Fehler her kommt. In der Finalen Version wollen wir das natürlich nicht! Da aber Fehler immer vorkommen können (leider) brauchen wir Fehlerseiten.
Fehlerseiten in einer Java Web-Applikation
Auf einem Entwicklungssystem ist es wichtig möglichst genaue Fehlermeldungen zu erhalten. Dort stört es nicht, wenn man dem Klick eines Buttons auf eine Feherseite geleitet wird in der ein Stacktrace Auskunft über die Fehlerursacht gibt. In einem Live System ist das für den Benutzer nicht nur störend, es ist sogar gefährlich, denn man könnte so nähere Details über das System herausfinden und eventuelle Schwachstellen so ausnutzen. Java bietet dazu eine nette und einfache Möglichkeit in der web.xml Datei Feherseiten in einer Java Web-Applikation zu definieren. Der Benutzer sieht dann nur noch diese statischen Seiten und weiß: es hat etwas nicht funktioniert, das System zeigt ihm aber nicht für den Benutzer unwichtige Daten an.
Fehlerseiten definieren
Definiert werden die Fehlerseiten in der web.xml Datei im WEB-INF Ordner. Anbei der Code, der gleich für mehrere Fehler Fehlerseiten definiert:
<error-page> <error-code>401</error-code> <location>/WEB-INF/error/401.html</location> </error-page> <error-page> <error-code>403</error-code> <location>/WEB-INF/error/403.html</location> </error-page> <error-page> <error-code>404</error-code> <location>/WEB-INF/error/404.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/WEB-INF/error/500.html</location> </error-page> <!-- catch anything that is not already catched --> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/WEB-INF/error/undefined.html</location> </error-page>
Zuerst werden anhand des Fehlercodes Fehlerseiten definiert. Für meine Projekte habe ich dafür definierte HTML Fehlerseiten, welche im error Unterordner im WEB-INF Verzeichnis liegen. Ganz wichtig ist hier die letzte Fehlerseite. Sollte nämlich ein Fehlercode auftreten, der noch nicht abgefangen wurde, dann muss eine Standard-Fehlerseite angezeigt werden. Ansonsten kann es passieren, dass trotz Fehlerseiten ein Stacktrace zu sehen ist und das wollten wir ja vermeiden.
Fazit
Für eine professionelle Anwendung muss man Fehlerseiten definieren. Bei Java geht das relativ einfach. In meinem Beispiel zeige ich wie man statische HTML Seiten den einzelnen Fehlercodes hinzufügt. Wer kreativ ist kann schöne Fehlerseiten erzeugen, optimal wäre immer mit einem Info wie es für den Benutzer nun weiter geht.
Wer hat die kreativste Fehlerseite? Postet einfach mal eure Links!