Si assume che si conosca già la struttura di una servlet e il suo
ciclo di vita in quanto argomenti spiegati a lezione di teoria.
Si ricorda che la documentazione circa i package javax.servlet
e javax.servlet.http
sono disponibili ANCHE in locale, all'URL
file:///usr/local/tomcat/webapps/tomcat-docs/servletapi/index.html.
Le servlet sono delle classi java, quindi per poter far eseguire delle
servlet è necessario prima compilarle nel formato bytecode.
Per compilare le servlet è necessario utilizzare la libreria
servlet.jar
disponibile nella directory
/usr/local/tomcat/common/lib
.
Ci sono due modi per compilare utilizzando una libreria:
CLASSPATH
(solo UNA
volta) in modo tale che includa la libreria e poi si compila
normalmente:
export CLASSPATH=.:/usr/local/tomcat/common/lib/servlet.jar:$CLASSPATH
javac MiaServlet.java
javac -classpath /usr/local/tomcat/common/lib/servlet.jar:. MiaServlet.java
Le servlet compilate (*.class) DEVONO essere memorizzate nella directory
webapps/nome/WEB-INF/classes/
, dove
nome è il nome dell'applicazione web di cui la
servlet deve far parte.
Se si pongono i sorgenti in un'altra directory si deve utilizzare
l'opzione -d dir_destinazione
del compilatore
per poter compilare la servlet e memorizzare direttamente nella
directory destinazione il file .class.
Ad esempio, supponiamo di voler compilare la servlet
HelloWorld.java
e di volerla utilizzare nel context
ROOT
.
~/tomcat/src/HelloWorld.java
ROOT
è ~/tomcat/webapps/ROOT/WEB-INF/classes/
javac -d ../webapps/ROOT/WEB-INF/classes/
HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class nomeClasse extends HttpServlet {
...eventuali variabili di classe
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
/* Definisco il tipo MIME del response. Caldamente richiesto
* dalle specifiche!
*/
response.setContentType("text/html; charset=ISO-8859-1");
PrintWriter out = response.getWriter();
//Inserisco il DOCTYPE!
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"");
out.println("\"http://www.w3.org/TR/REC-html40/loose.dtd\">");
out.println("<html>");
out.println("<head>");
...inserire tutti i dati del header
out.println("</head>");
out.println("<body>");
...inserire tutti i dati del body
out.println("</body>");
out.println("</html>");
}
}
Partendo da questo schema, scrivere una semplice servlet che produca un
file HTML contenente la classica frase "Hello World!", salvarla nella
directory tomcat/src
e attivarla nel context
ROOT
.
Se si hanno problemi, esiste la servlet di esempio
HelloWorldEsempio.java
(in tomcat/src
)
con cui confrontare il proprio codice.