CountryNamesServlet.java
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&auml;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 = (Stringit.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 = (LocaleallLocales.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&ouml;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&uuml;ck</a>");
135     out.println("</body></html>");
136 
137   }
138 }