// Beispiel Servlet fuer // WWW & Servlets // Fachgruppe Softwaretechnik // Uwe Poborski 14.04.99 // FluBuServlet.java // benoetigte Klassen: // FlugGraph // GraphDatei // Flughafen // Flug // Flugzeug // ZeitAngabe import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FluSuServlet extends HttpServlet { // Zeichenketten Konstanten private static String Delim = "; "; private static String ANKUNFT = "Ankunft", ABFLUG = "Abflug", DATUM = "Datum", ANFRAGE = "Anfrage", PREIS = "Preis", ZEIT = "Zeit", PFAD = "Pfad"; // Variablen des Servlets private String Von, Nach, Wann, Pfad; private boolean PreisOderZeit; private FlugGraph Graph; // Klasse zur Suche von Verbindungen public void init(ServletConfig config) throws ServletException { super.init(config); } public void doPost(HttpServletRequest Anfrage, HttpServletResponse Antwort) throws ServletException, IOException { bearbeitenAnfrage(Anfrage); bearbeitenAntwort(Antwort); } public void bearbeitenAnfrage(HttpServletRequest Anfrage) throws IOException { String[] Vons = Anfrage.getParameterValues(ABFLUG), Nachs = Anfrage.getParameterValues(ANKUNFT), Wanns = Anfrage.getParameterValues(DATUM), Frage = Anfrage.getParameterValues(ANFRAGE), Pfade = Anfrage.getParameterValues("Pfad"); Pfad = Pfade[0]; Von = Vons[0]; Nach = Nachs[0]; Wann = Wanns[0]; if (Frage[0].equals(ZEIT)) PreisOderZeit = false; else PreisOderZeit = true; } public void bearbeitenAntwort(HttpServletResponse Antwort) throws IOException { Antwort.setContentType("text/html"); PrintWriter Schreiber = Antwort.getWriter(); Schreiber.println("\n\n"); generiereHTMLKopf(Schreiber); generiereHTMLKoerper(Schreiber); Schreiber.println("\n"); Schreiber.close(); } public void generiereHTMLKopf(PrintWriter Schreiber) throws IOException { Schreiber.println("\n"); Schreiber.println(""); } public void generiereHTMLKoerper(PrintWriter Schreiber) throws IOException { Schreiber.println("\n

Ihre Verbindung

\n"); if (doSearch()) { Flughafen Abflughafen = Graph.Verbindung; /* Flug Verbindung = Graph.Verbindung.Fluege; while (Verbindung != null) { einFlug(Abflughafen.Name, Verbindung, Schreiber); Abflughafen = Verbindung.Hafen; Verbindung = Verbindung.Naechster; } */ for (Flug Verbindung = Graph.Verbindung.Fluege; Verbindung != null; Verbindung = Verbindung.Naechster) { einFlug(Abflughafen.Name, Verbindung, Schreiber); Abflughafen = Verbindung.Hafen; } } else { if (!Wann.equals("")) Schreiber.print("Am " + Wann); Schreiber.print(" keine Verbindung von " + Von); Schreiber.println(" nach " + Nach); } Schreiber.println("\n"); } public boolean doSearch() { boolean Ret = false; Graph = new FlugGraph(Von, Nach, PreisOderZeit, Pfad); if (Graph.suchen()) { Graph.erstellVerbindung(); if (Graph.Verbindung != null) Ret = true; } return Ret; } private void einFlug(String V, Flug F, PrintWriter Datei) { Datei.print(Wann + Delim); Datei.print(F.Nummer + Delim); Datei.print(V + Delim); Datei.print(F.Anfang.gibFormZeit() + Delim); Datei.print(F.Hafen.Name + Delim); Datei.print(F.Ende.gibFormZeit() + Delim); ZeitAngabe ZA = new ZeitAngabe(F.Ende.gibStunden(), F.Ende.gibMinuten()); ZA.subtrahieren(F.Anfang); Datei.print(ZA.gibFormZeit() + Delim); Datei.println(F.gibPreis(Flug.TC) + " DM
"); } }