Servlets - Packaging

La struttura dell'applicazione web che coinvolge la sottodirectory WEB-INF è standard per tutte le applicazioni web Java e specificata dalla specifica API servlet. Dato un nome di directory di primo livello di myapp. Ecco come appare questa struttura di directory:

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

La sottodirectory WEB-INF contiene il descrittore di distribuzione dell'applicazione, denominato web.xml. Tutti i file HTML dovrebbero essere conservati nella directory di primo livello che è myapp . Per l'utente amministratore, troverai la directory ROOT come directory principale.

Creazione di servlet nei pacchetti

La directory WEB-INF / classes contiene tutte le classi servlet e altri file di classe, in una struttura che corrisponde al nome del loro pacchetto. Ad esempio, se hai un nome di classe completo dicom.myorg.MyServlet, allora questa classe servlet deve trovarsi nella seguente directory -

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

Di seguito è riportato l'esempio per creare la classe MyServlet con un nome di pacchetto 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.
   }
}

Compilazione di servlet nei pacchetti

Non c'è niente di molto diverso per compilare una classe disponibile in package. Il modo più semplice è mantenere il file java in un percorso completo, come menzionato sopra, la classe sarebbe mantenuta in com.myorg. Dovresti anche aggiungere questa directory in CLASSPATH.

Supponendo che il tuo ambiente sia configurato correttamente, entra <Tomcat-installationdirectory>/ webapps / ROOT / WEB-INF / classes e compilare MyServlet.java come segue

$ javac MyServlet.java

Se il servlet dipende da altre librerie, è necessario includere anche quei file JAR nel CLASSPATH. Ho incluso solo il file JAR servlet-api.jar perché non sto utilizzando nessun'altra libreria nel programma Hello World.

Questa riga di comando utilizza il compilatore javac integrato fornito con JDK (Java Software Development Kit) di Sun Microsystems. Affinché questo comando funzioni correttamente, è necessario includere la posizione dell'SDK Java che si sta utilizzando nella variabile di ambiente PATH.

Se tutto va bene, la compilazione di cui sopra produrrebbe MyServlet.classfile nella stessa directory. La prossima sezione spiegherebbe come un servlet compilato verrebbe distribuito in produzione.

Distribuzione servlet in pacchetto

Per impostazione predefinita, un'applicazione servlet si trova nel percorso <Tomcat-installationdirectory> / webapps / ROOT e il file di classe risiederebbe in <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes.

Se hai un nome di classe completo di com.myorg.MyServlet, quindi questa classe servlet deve trovarsi in WEB-INF / classes / com / myorg / MyServlet.class e dovresti creare le seguenti voci in web.xml file situato in <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>

Voci sopra da creare all'interno dei tag <web-app> ... </web-app> disponibili nel file web.xml. Potrebbero esserci varie voci in questa tabella già disponibili, ma non importa.

Hai quasi finito, ora avvia il server Tomcat usando <Tomcat-installationdirectory> \ bin \ startup.bat (su Windows) o <Tomcat-installationdirectory> /bin/startup.sh (su Linux / Solaris ecc.) E infine digita http://localhost:8080/MyServletnella casella degli indirizzi del browser. Se tutto va bene, otterrai il seguente risultato:

Hello World