Da das Servlet sowohl HTML-Seiten mit Herstellerinformation als auch mit Kataloginformationen generiert, muß während der Abarbeitung eine entsprechende Fallunterscheidung bezüglich der Client-Anforderung getroffen werden. Dies geschieht anhand der Auswertung des Formular-Parameters p_infotype des Requests. Den genauen Ablauf kann man dem folgenden Auszug aus dem Quell-Code entnehmen.
// Verarbeitung der Client-Anfrage
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String result = "";
String producer_id = "";
String catalog_id = "";
String query = "";
String sourceFile = "";
String replaceString = "";
String[] param1 = null;
// globale Fehlervariable initialisieren
noError = true;
// Formular-Parameter abfragen
String infotype = request.getParameter("p_infotype");
// wenn Formular-Parameter existiert
if (infotype != null) {
// Informationen über den Hersteller
if (infotype.equals("Hersteller-Info")) {
// Parameter "p_producer_id" der Produktseite abfragen
producer_id = request.getParameter("p_producer_id");
if (producer_id == null) {
producer_id = "-1";
}
else {
if (producer_id.equals("")) producer_id = "-1";
}
// Parameterliste zur Datenbankabfrage initialisieren
String[] param1_1 = {"NAME","STRASSE","NUMMER","PLZ","STADT","BUNDESLAND","LAND","TELEFON","FAX","E_MAIL","INTERNETADRESSE"};
param1 = param1_1;
// SQL-Abfrage definieren
query = "SELECT h.name,a.strasse,a.nummer,a.plz,a.stadt,a.bundesland,a.land,a.telefon,a.fax,a.e_mail,a.internetadresse FROM adresse a, hersteller h WHERE a.hid=h.hid AND h.hid=" + producer_id;
// vorgefertigte HTML-Datei definieren
// absolute Pfadangabe muß bei Verwendung angepaßt werden
sourceFile = "/export/pub/jakarta-tomcat-4.0.3/webapps/adia/servlets/producer.html";
// Platzhalter definieren
replaceString = "@producer_info@";
}
// Informationen über den Katalog
else {
// Parameter "p_catalog_id" der Produktseite abfragen
catalog_id = request.getParameter("p_catalog_id");
if (catalog_id == null) {
catalog_id = "-1";
}
else {
if (catalog_id.equals("")) catalog_id = "-1";
}
// Parameterliste zur Datenbankabfrage initialisieren
String[] param1_2 = {"KATALOG_ID","NAME","ANBIETER","VERSION","ERSTELLUNGSDATUM","IMPLEMENTIERUNGSDATUM"};
param1 = param1_2;
// SQL-Abfrage definieren
query = "SELECT * FROM katalog WHERE cid=" + catalog_id;
// vorgefertigte HTML-Datei definieren
// absolute Pfadangabe muß bei Verwendung angepaßt werden
sourceFile = "/export/pub/jakarta-tomcat-4.0.3/webapps/adia/servlets/catalog.html";
// Platzhalter definieren
replaceString = "@catalog_info@";
}
// Parameterliste zur Tabellenformatierung initialisieren
String[] param2 = {"","","",""};
// Daten ermitteln
try {
// Abfrage ausführen
Vector Info = dbcon.OraDBgetResult(query, param1, 0);
// Formatierung durchführen
result = pageGen.formatTable(Info, param1.length, param2);
}
// Fehlerbehandlung
catch (SQLException e) {
noError = false;
error = e.toString();
}
}
// wenn Formular-Parameter nicht existiert, dannFehlerausgabe
else {
noError = false;
error = "Informationstyp nicht definiert!";
}
// Erzeugung und Ausgabe der HTML-Seite
try {
// wenn kein Fehler aufgetreten ist
if (noError) {
page = pageGen.readPage(sourceFile);
page = pageGen.replaceParam(page,result,replaceString);
}
// Generierung einer Seite mit der Fehlermeldung
else {
// absolute Pfadangabe muß bei Verwendung angepaßt werden
page = pageGen.readPage("/export/pub/jakarta-tomcat-4.0.3/webapps/adia/servlets/error.html");
page = pageGen.replaceParam(page,error,"@error@");
}
}
// Generierung einer Seite mit der Fehlermeldung
catch (Exception e) {
page = e.toString();
}
// Ergebnisausgabe an Client
out.println(page);
}
Die vorgefertigten HTML-Seiten mit den Platzhaltern können hier für die Darstellung der Herstellerinformationen und hier für die Darstellung der Kataloginformationen betrachtet werden.