Serwlety - opakowanie

Struktura aplikacji internetowej obejmująca podkatalog WEB-INF jest standardowa dla wszystkich aplikacji internetowych Java i określona przez specyfikację API serwletu. Biorąc pod uwagę nazwę katalogu najwyższego poziomu myapp. Oto jak wygląda ta struktura katalogów -

/myapp
   /images
   /WEB-INF
      /classes
      /lib

Podkatalog WEB-INF zawiera deskryptor wdrażania aplikacji o nazwie web.xml. Wszystkie pliki HTML powinny być przechowywane w katalogu najwyższego poziomu, czyli myapp . W przypadku administratora jako katalog nadrzędny można znaleźć katalog ROOT.

Tworzenie serwletów w pakietach

Katalog WEB-INF / classes zawiera wszystkie klasy serwletów i inne pliki klas w strukturze zgodnej z nazwą ich pakietu. Na przykład jeśli masz w pełni kwalifikowaną nazwę klasycom.myorg.MyServlet, to ta klasa serwletu musi znajdować się w następującym katalogu -

/myapp/WEB-INF/classes/com/myorg/MyServlet.class

Poniżej przedstawiono przykład tworzenia klasy MyServlet o nazwie pakietu com.myorg

// Name your package
package com.myorg;  

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class MyServlet extends HttpServlet {
 
   private String message;
 
   public void init() throws ServletException {
      // Do required initialization
      message = "Hello World";
   }
 
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      // Actual logic goes here.
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
   }

   public void destroy() {
      // do nothing.
   }
}

Kompilowanie serwletów w pakietach

Nie ma nic innego jak kompilacja klasy dostępnej w pakiecie. Najprostszym sposobem jest przechowywanie pliku java w pełnej ścieżce, jak wspomniano powyżej, klasa będzie przechowywana w com.myorg. Konieczne byłoby również dodanie tego katalogu w CLASSPATH.

Zakładając, że twoje środowisko jest poprawnie skonfigurowane, wejdź <Tomcat-installationdirectory>/ webapps / ROOT / WEB-INF / classes i skompiluj MyServlet.java w następujący sposób

$ javac MyServlet.java

Jeśli serwlet jest zależny od innych bibliotek, musisz również dołączyć te pliki JAR do swojej CLASSPATH. Załączam tylko plik JAR servlet-api.jar, ponieważ nie używam żadnej innej biblioteki w programie Hello World.

Ten wiersz poleceń używa wbudowanego kompilatora javac, który jest dostarczany z zestawem Sun Microsystems Java Software Development Kit (JDK). Aby to polecenie działało poprawnie, należy uwzględnić lokalizację używanego zestawu Java SDK w zmiennej środowiskowej PATH.

Jeśli wszystko pójdzie dobrze, powyższa kompilacja da MyServlet.classplik w tym samym katalogu. W następnej sekcji wyjaśniono, jak skompilowany serwlet zostanie wdrożony w środowisku produkcyjnym.

Pakowane wdrożenie serwletu

Domyślnie aplikacja serwletu znajduje się w ścieżce <Tomcat-installationdirectory> / webapps / ROOT, a plik klasy znajdowałby się w <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes.

Jeśli masz w pełni kwalifikowaną nazwę klasy com.myorg.MyServlet, to ta klasa serwletu musi znajdować się w WEB-INF / classes / com / myorg / MyServlet.class i konieczne byłoby utworzenie następujących wpisów w web.xml plik znajdujący się w <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>com.myorg.MyServlet</servlet-class>
</servlet>
 
<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

Powyższe wpisy do utworzenia wewnątrz tagów <web-app> ... </web-app> dostępnych w pliku web.xml. W tej tabeli mogą być już dostępne różne wpisy, ale nieważne.

Prawie gotowe, teraz uruchommy serwer Tomcat za pomocą katalogu <Tomcat-installationdirectory> \ bin \ startup.bat (w systemie Windows) lub <Tomcat-installationdirectory> /bin/startup.sh (w systemie Linux / Solaris itp.) I na koniec wpisz http://localhost:8080/MyServletw polu adresu przeglądarki. Jeśli wszystko pójdzie dobrze, otrzymasz następujący wynik -

Hello World