Bibliotheken nutzen
Oft kommt es vor, dass Sie eine bestimmte Funktionalität benötigen, die Sie nicht selbst implementieren wollen. Das Internet bietet hier eine Fülle von Bibliotheken zur freien Verwendung, die Sie in Ihrer Webapplikation nutzen können.
Nehmen wir ein einfaches Beispiel, den Fileupload. Wenn Sie einen Fileupload mittels eines HTML – Multipart-Form-Data Formulars anbieten möchten:
<form action="target.jsp" method="post" enctype="multipart/form-data" >
so bekommen Sie das Problem, einen Multipart-Form-Data Request zu lesen, was nicht ganz trivial ist. Hier finden Sie, was der Browser im Fall eines Multipart-Requests an den Server sendet. Wie Sie sehen, werden nach dem entsprechenden Header zwei Teile (eben multipart) geschickt, die durch die „boundary“:
---------------------------41184676334
getrennt werden. Im ersten Teil die binären Daten unseres Bildes, im Zeiten Teil der Inhalt einer Textarea. Die boundary + "--" markiert schließlich das Ende der Übertragung.
Glücklicherweise gibt es einige Bibliotheken im Internet, die uns diese Arbeit abnehmen, wir entscheiden uns hier für die Apache Commons, weil Sie ein Teil des Struts- Frameworks ist, dass Sie später auch für andere Aufgaben mit Gewinn heranziehen können.
Schön ist, dass sich solche Bibliotheken ganz einfach mit Tomcat (und anderen Server) nutzen lassen, indem wir sie einfach an die passende Stelle kopieren. Die passende Stelle ist in unserem Fall das Verzeichnis WEB-INF/lib. Hier gehören alle Bibliotheken hin, die von einer Webapplikation genutzt werden. Ressourcen, die von mehreren Webapplikationen gemeinsam genutzt werden, wie beispielsweise Datenbanktreiber, sollten inCATALINA_HOME/shared/lib untergebracht werden.
Wie diese Bibliothek zu benutzen ist, entnehmen wir ihrer Dokumentation. Ich habe das mal umgesetzt, damit Sie es leichter nachvollziehen können:
upload.jsp enthält das HTML-Formular zur Auswahl der hochzulandenden Datei. Zusätzlich kann ein Kommentar angegeben werden. In upload_target.jsp wird der Request entgegengenommen und verarbeitet. Bitte entnehmen Sie die Einzelheiten den Kommentaren und benutzen Sie die Dokumentation der Bibliothek, um das Beispiel nachzuvollziehen. Ebenfalls beteiligt ist ein kleines Servlet, das den Request anzeigen kann: ShowRequest.java, sodass Sie den Multipart-Form-Data besser nachvollziehen können.
Sie haben gesehen, dass es relativ einfach ist, die Funktionalität der Servers durch externe Bibliotheken zu erweitern.