Pierwsza aplikacja WWW

Podstawową technologią implementacji aplikacji WWW w Javie są tzw. Servlety. Jakkolwiek istnieje ogromna liczba przeróżnych technologii, które ułatwiają tworzenie aplikacji WWW, to koniec końców wszystkie one są li tylko – mniej lub bardziej sprytnym – wykorzystaniem technologii Servletów. Na dobry początek zaimplementujmy więc prosty Servlet.

Servlet to nic innego, jak pewna specyficzna klasa (fragment kodu w Javie) obsługująca żądania protokołu HTTP. Servlety, aby mogły działać, muszą być zainstalowane na Serwerze Aplikacji. Zadaniem owego serwera jest zamiana żądań HTTP na wywołania odpowiednich metod zaimplementowanych w języku Java. Implementując aplikację WWW w Javie musimy zaimplementować ową specyficzną klasę – Servlet – oraz przygotować plik konfiguracyjny XML zwany deskryptorem wdrożenia, tudzież deskryptorem instalacji (ang. deployment descriptor).

Deskryptor wdrożenia zawiera informacje opisujące w jaki sposób serwer aplikacji ma udostępniać nasz Servlet. W szczególności są to informacje określające adres HTTP naszego Servletu (tj. URL naszej aplikacji WWW).

Nasz pierwszy Servlet zaimplementujemy bez pomocy IDE. Niezbędne będzie natomiast JDK oraz serwer aplikacji Tomcat. Jak zainstalować JDK opisałem w artykule „Instalujemy JDK” a jak Tomcata w artykule „Instalujemy serwer Tomcat”.

Posługując się naszym ulubionym edytorem tekstu (np. Notepad z systemu Windows) utwórzmy plik o nazwie HelloWorldServlet.java i treści

 

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

public class HelloWorldServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  protected void doGet(HttpServletRequest request,
                       HttpServletResponse response)
                 throws ServletException, IOException {
    
    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<html><head><title>My Servlet</title></head><body>");
    out.println("Hello World!");
    out.println("<body></html>");

    out.close();
  }
}


Powyższy kod to nic innego jak klasa języka Java o nazwie HelloWorldServlet, która to klasa spełnia wszystkie wymagania specyfikacji Servletów, a więc jest Servletem.

Teraz przygotujemy deskryptor wdrożenia. Utwórzmy więc posługując się dowolnym edytorem tekstu plik o nazwie web.xml (plik ten zawsze musi się nazywać dokładnie tak) i zawartości:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

  <servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>HelloWorldServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
  </servlet-mapping>
</web-app>

Zanim przystąpimy do instalacji aplikacji na serwerze Tomcat, musimy nasz Servlet skompilować. Wydajemy w tym celu z linii poleceń (będąc w katalogu, w którym zapisaliśmy plik HelloWorldServlet.java) komendę:

javac -cp "%CATALINA_HOME%\lib\servlet-api.jar" HelloWorldServlet.java


Zakładam, że zdefiniowaliśmy zmienną środowiskową %CATALINA_HOME% tak aby wskazywała katalog w którym zainstalowaliśmy serwer Tomcat. Ewentualnie, możemy zamiast %CATALINA_HOME% wpisać ścieżkę dostępu do katalogu bazowego Tomcata (np. C:\Program Files\Tomcat 6.0).

Pozostało jeszcze naszą aplikację zainstalować na serwerze. W tym celu w podkatalogu webapps Tomcata, tj. w katalogu %CATALINA_HOME%\webapps tworzymy katalog o nazwie WebApp. W katalogu WebApp tworzymy podkatalog WEB-INF (nazwa wydaje się być dziwna, ale taka być musi) i w tymże jeszcze podkatalog o nazwie classes. Do katalogu WebApp\WEB-INF kopiujemy deskryptor wdrożenia, tj. plik web.xml, a do katalogu WebApp\WEB-INF\classes skompilowany Servlet, tj. plik HelloWorldServlet.class. Ostateczna struktura powinna być taka jak pokazano poniżej.

 

Jeśli Tomcat był wyłączony, to teraz go uruchamiamy (patrz artykuł „Instalujemy serwer Tomcat”). Jeśli postępowaliśmy dokładnie tak, jak opisano w niniejszym artykule, to aplikacja dostępna jest pod adresem http://localhost:8080/WebApp/HelloWorld. Uruchamiamy przeglądarkę żeby przekonać się czy działa. Efekt powinien być podobny do tego pokazanego poniżej.

Jeśli zamiast tego widzimy komunikat o błędzie, to odczekajmy chwilkę i odświeżmy jeszcze raz stronę. Ewentualnie, jeśli to nie pomoże, zrestartujmy serwer. Problemy tego typu nie powinny wystąpić, jeśli Tomcat był początkowo wyłączony i uruchomiliśmy go dopiero po zainstalowaniu aplikacji.

Może wydawać się, że skoro tak słaby efekt wymaga tak dużej ilości pracy, to jest to gra nie warta świeczki. Śpieszę więc z wyjaśnieniami – można to wszystko zrobić dużo prościej. Dowiemy się jak, jeśli tylko zdecydujemy się zainwestować w naukę Javy wystarczającą ilość czasu. No i oczywiście, nade wszystko, Java nie służy do implementacji tego typu trywialnych aplikacji.

 

 

0 0 votes
Daj ocenę
Subscribe
Powiadom o
guest

1 Komentarz
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments