001 package jspkurs.bsp.kap3;
002
003 import java.io.IOException;
004 import java.io.PrintWriter;
005 import java.util.*;
006
007 import javax.servlet.ServletException;
008 import javax.servlet.http.*;
009
010 /**
011 * Ein einfaches Servlet, dass L�ndernamen in
012 * Deutsch, Englisch, Franz�siche und Italienisch anzeigt.
013 *
014 * BEACHTEN SIE, DASS SIE ZUM KOMPILIEREN DIESES SERVLETS
015 * DIE DATEI servlet.jar ZUR FINDEN IN tomcat/lib IN DEN
016 * CLASSPATH AUFNEHMEN M�SSEN!
017 *
018 * @author Hans Joachim Herbertz
019 * @created 18.02.2003
020 *
021 * Alle Servlets werden von
022 * javax.servlet.http.HttpServlet abgeleitet. Sie erhalten
023 * dadurch die grundlegende Funktionalit�t, um als Servlet
024 * verwendet werden zu k�nnen. Allerdings tun sie dann
025 * noch nichts.
026 *
027 * Funktionalit�t f�gen wir hinzu, indem wir Methoden aus
028 * HttpServlet �berschreiben.
029 */
030 public class CountryNamesServlet extends HttpServlet {
031 /**
032 * Eine Hashtable, um bequem auf die Daten zugreifen zu k�nnen. */
033 private Map allLocales = null;
034
035 /**
036 * Die ini(..) Methode wird aufgerufen, wenn das Servlet vom Container
037 * geladen wird. */
038 public void init() throws ServletException {
039
040 // Locale.setDefault(Locale.GERMAN);
041
042 // Hashtable f�r Daten erzeugen
043 allLocales = new TreeMap();
044
045 // alle verf�gbaren Lokalen holen
046 Locale[] locales = Locale.getAvailableLocales();
047 for (int i = 0; i < locales.length; i++) {
048 // Locale, die einen L�ndernamen besitzen speichern
049 if (locales[i].getDisplayCountry().length() > 0) {
050 allLocales.put(locales[i].getDisplayCountry(), locales[i]);
051 }
052 }
053 }
054
055 /**
056 * Diese Methode wird vom Container aufgerufen, wenn ein Request mit
057 * der GET-Methode ankommt; das ist �blicherweise der Fall, ausser wenn
058 * Sie ein Formular explizit mit POST senden. Wir zeigen in diesem Fall
059 * eine Auswahlliste der verf�gbaren L�nder an. */
060 public void doGet(HttpServletRequest request, HttpServletResponse response)
061 throws ServletException, IOException {
062
063 // Content type setzen
064 response.setContentType("text/html");
065
066 // besorgen uns einen Writer, mit dem wir in
067 // die Ausgabe schreiben k�nnen.
068 PrintWriter out = response.getWriter();
069 out.println("<html><body>");
070 out.println("Wählen Sie ein Land aus!<br>");
071 out.println(
072 "<form action=\""
073 + request.getRequestURL()
074 + "\" method=\"post\" name=\"formb\">");
075 out.println("<select name=\"country\" onChange=\"formb.submit()\">");
076
077 // Aufz�hlung aller L�ndernamen (keys)
078 Iterator it = allLocales.keySet().iterator();
079 while (it.hasNext()) {
080 String aCountry = (String) it.next();
081 out.println(
082 "<option value=\"" + aCountry + "\">" + aCountry + "</option>");
083 }
084
085 out.println("</select></form>");
086 out.println("</body></html>");
087
088 }
089
090 /**
091 * Schliesslich doPost(..) �berschreiben, um nach Auswahl eines Landes
092 * die entsprechenden Ausdr�cke anzuzeigen. */
093 public void doPost(
094 HttpServletRequest request,
095 HttpServletResponse response)
096 throws ServletException, IOException {
097
098 // Ausgew�hltes land holen
099 String selectedCountry = request.getParameter("country");
100
101 // wenn wir das ausgew�hlte Land nicht festellen k�nnen,
102 // noch einmal die Auswahlseite anzeigen.
103 if (selectedCountry == null
104 || selectedCountry.length() < 1) {
105 doGet(request, response);
106 return;
107 }
108 // Locale zum Land
109 Locale selectedLocale = (Locale) allLocales.get(selectedCountry);
110
111 response.setContentType("text/html");
112 PrintWriter out = response.getWriter();
113 out.println("<html><body><table>");
114
115 out.println(
116 "<tr><td>Deutsch</td><td>"
117 + selectedLocale.getDisplayCountry(Locale.GERMAN)
118 + "</td></tr>");
119 out.println(
120 "<tr><td>Englisch</td><td>"
121 + selectedLocale.getDisplayCountry(Locale.US)
122 + "</td></tr>");
123 out.println(
124 "<tr><td>Französisch</td><td>"
125 + selectedLocale.getDisplayCountry(Locale.FRENCH)
126 + "</td></tr>");
127 out.println(
128 "<tr><td>Italienisch</td><td>"
129 + selectedLocale.getDisplayCountry(Locale.ITALIAN)
130 + "</td></tr>");
131
132 out.println("</table><br>");
133 out.println(
134 "<a href=\"" + request.getRequestURI() + "\">zurück</a>");
135 out.println("</body></html>");
136
137 }
138 }
|