Strona główna > GWT > Ajax w GWT – pogodynka

Ajax w GWT – pogodynka

Czas na pierwszy, konkretny wpis. Jako że chciałem mniej więcej zobaczyć GWT, wygrzebałem link z moich zakładek na delicious: Ajax for Java developers: Exploring the Google Web Toolkit

Wpis z 2006, kilka metod przestarzałych, no i oczywiście aplikacja nie działa z nową biblioteką HTTP Components.

Informacja: W tym i kolejnych artykułach nie będę się rozpisywał o technologii, szkoda czasu na bawienie się w tłumacza i przepisywanie tego co już jest napisane, więc w razie potrzeby będę odsyłał do innych artykułów.

Potrzebujemy:

Krótki tutorial na temat używania Netbeans i GWT można znaleźć tutaj

Tworzymy nowy projekt „Java WebApplication” na liście frameworków wybieramy „Google Web Toolkit”. Do bibliotek dodajemy paczki httpclient-4.0.jar , httpcore-4.0.1.jar oraz commons-logging-1.1.1.jar. Po przeczytaniu artykułu na którym bazuję idziemy dalej.

Na początek zmiany w kodzie mające na celu usunięcie przestarzałych metod [w klasie Weather].

Najważniejsze zmiany to kod odpowiedzialny za przechwytywanie zdarzeń.

Czyli naciśnięcie klawisza ENTER zmieniamy z

txBox.addKeyboardListener(new KeyboardListenerAdapter(){
    public void onKeyPress(Widget sender, char keyCode, int modifiers) {
        if ((keyCode == 13) && (modifiers == 0)) {
            validateAndSubmit();
        }
    }
});

na

 txBox.addKeyPressHandler(new KeyPressHandler() {
    public void onKeyPress(KeyPressEvent event) {
        if ((event.getCharCode() == KeyCodes.KEY_ENTER) && (event.isAnyModifierKeyDown() == false)) {
            validateAndSubmit();
        }
    }
});

wykrycie kliku lewego przycisku myszy z

 Button btn = new Button("Submit", new ClickListener() {
    public void onClick(Widget sender) {
       validateAndSubmit();
    }
});

na poniższy kod

 Button btn = new Button("Submit", new ClickHandler() {
    public void onClick(ClickEvent event) {
        validateAndSubmit();
    }
});

w kilku miejscach znajdziemy też

ucRadio.setChecked(true)
ucRadio.isChecked();

i zmieniamy odpowiednio na

ucRadio.setValue(true)
ucRadio.getValue();

Reszta zmian, to dostosowanie aplikacji do nowej wersji bibliotek Apache HTTP Components [v.4].
W klasie YahooWeatherServiceImpl zmieniamy ciało funkcji getWeatherRssDocument() z:

String url = getRequestUrl(zip, isCelsius);

 HttpClient client = new HttpClient();
 GetMethod get = new GetMethod(url);
 try {
    int resultCode = client.executeMethod(get);
    log.debug("HTTP response: "+resultCode);

    if (resultCode == 200) {
       InputStream in = get.getResponseBodyAsStream();

       DocumentBuilder builder = builderFactory.newDocumentBuilder();
       return builder.parse(in);
    } else {
         throw new IOException("HTTP Communication problem, response code: "+resultCode);
      }

 } finally {

 get.releaseConnection();
 }

na następujący kod:

String url = getRequestUrl(zip, isCelsius);

 HttpClient client = new DefaultHttpClient();
 HttpGet get = new HttpGet(url);
 try {

 HttpResponse response = (HttpResponse) client.execute(get);
 int resultCode = response.getStatusLine().getStatusCode();
 log.debug("HTTP response: " + resultCode);
 HttpEntity entity = response.getEntity();
 if (resultCode == HttpStatus.SC_OK) {
 InputStream in = entity.getContent();

 DocumentBuilder builder = builderFactory.newDocumentBuilder();
 return builder.parse(in);
 } else {
 throw new IOException("HTTP Communication problem, response code: " + resultCode);
 }

 } finally {
 // Process the data from the input stream.
 }

To wszystko. Aplikacja działa 🙂 pokazuje pogodę [przykładowy kod pocztowy 90210].
Źródło aplikacji dostępne jest tutaj

Jeśli ktoś ma jakieś pytania co i jak, lub sugestie odnośnie lepszych rozwiązań zapraszam do komentowania 🙂

Advertisements
  1. 27 października 2009 o 12:26

    Zamieniłbym tylko 13 na stałą w ramach propagowania dobrych zwyczajów 😉

    Bardzo fajny pomysł z aktualizacjami starych tutoriali i dzieleniu się wynikami. Oby starczyło zapału 🙂

  2. 27 października 2009 o 21:16

    Dziękuję za uwagę 🙂 „13” zastąpiłem na KeyCodes.KEY_ENTER

    Z ciekawości poszperałem jeszcze w Http Components czy „200” nie da się zastąpić stałą, no i jest HttpStatus.SC_OK 🙂

    Zapału raczej nie braknie, gorzej z czasem. Na początku pewnie wpisy nie będą zbyt często [niestety dziesięciu srok za ogon nie złapię ;)], ale będzie dobrze 🙂

    Pozdrawiam 🙂

  3. 9 października 2014 o 9:19

    Good way of describing, and pleasant piece of writing to get information regarding my presentation focus, which i am going to convey in institution of higher education.

  4. 5 listopada 2016 o 12:16

    At this time I am going away to do my breakfast,
    after having my breakfast coming over again to read additional news.

  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: