- Dovreste avere Apache e MySql installati altrimenti guardate qui.
- Dovreste avere Java 1.4 installata.
- Scaricate l'ultima versione di Tomcat in
/usr/local/tomcat
- Definite le variabili ambiente:
setenv JAVA_HOME /usr/java/java
setenv CATALINA_HOME /usr/local/tomcat
- Fate partire Tomcat con:
cd $CATALINA_HOME
./bin/startup.sh
- Per stopparlo date:
./bin/shutdown.sh
Se qualcosa non funziona come dovrebbe (ad. esempio applicazione che non parte)
allora guardate il log su $CATALINA_HOME/logs/catalina.out
Ricordate che dopo aver fatto una correzione occorre quasi sempre stoppare
e far ripartire Tomcat.
Per controllare il funzionamento di Tomcat o per capire perche' un servlet non funziona date il comando:
tail -f $CATALINA_HOME/logs/catalina.out
- Per aggiungere utenti editate il file
conf/tomcat-users.xml
Ad esempio, se volete poter gestire Tomcat via Web aggiungete:
<role rolename="manager"/>
<user username="nomeutente" password="passwordutente" roles="manager"/>
- Ora Tomcat dovrebbe essere accessibile come server Web sulla porta 8080
http://localhost:8080/
.
La pagina iniziale vi da accesso a vari esempi e alle pagine di amministrazione e manager . Queste accessibili solo agli utenti con "ruolo" admin e manager
rispettivamente.
- Tomcat vede tutto come "applicazione web" . Di solito le applicazioni Web
sono tutte nella cartella webapps. Per creare una nuova applicazione Web
dovete creare una nuova cartella in webapps. In questa cartella definire
almeno un html che serve per accedere all'applicazione . In piu' dovete crearvi
un'altra cartella chiamata WEB-INF e all'interno di questa un file "web.xml"
che descrive l'applicazione. Ecco il piu' semplice web.xml:
<xml version="1.0" encoding="ISO-8859-1"?>
<DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
</web-app>
e il suo risultato.
- Un'applicazione Web da scaricare la trovate sotto forma di file .war
in effetti un archivio zippato contenente le cartelle e i vari files.
Se voi copiate un file ".war" come questo in
webapps
e stoppate e quindi fate
ripartire Tomcat, troverete che Tomcat ha unzippato cartelle e file a partire
dalla cartella wide_world di nome uguale a quello del file che ora permette di accedere all'applicazione.
- Le cartelle possono contenere oltre a normali html, anche pagine dinamiche
jsp. Come esempio ecco l'applicazione somma dove la pagina jsp e' la seguente riga di codice:
<%=Integer.parseInt(request.getParameter("numero1"))+Integer.parseInt(request.getParameter("numero2"))%>
Provando a eseguire questo esempio , potete vedere la maniera di funzionare
di Tomcat che viene indicato come un contenitore di servlet. La prima volta
che si esegue l'esecuzione e' lentissima, perche' Tomcat deve ricompilare
l'applicazione.Ma le volte successive l'esecuzione e' immediata perche'
l'applicazione e' gia' pronta in memoria . Queste applicazioni che vengono
eseguite dal server sono i servlet.
- Prima dell'introduzione delle pagine dinamiche JSP (che sono l'equivalente
Java delle pagine ASP o PHP), si richiamava direttamente una classe Java come
in questo esempio.
L'html fa riferimento all'indirizzo "/somma". Il fatto che questo corrisponda
a una classe Somma viene descritto nel file web.xml.
La classe servlet Somma.java deve essere contenuta nella sottocartella
classes
di WEB-INF. Ecco il codice del servlet:
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class Somma extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
ServletOutputStream out = response.getOutputStream();
out.println(Integer.parseInt(request.getParameter("numero1"))+Integer.parseInt(request.getParameter("numero2")));
}
}
Esso va compilato con la solita istruzione "javac Somma.java" ma dato che il
pacchetto javax.servlet non e' nella distribuzione standard di Java ma e'
stato scaricato con Tomcat, prima di fare questo dobbiamo dare un:
setenv CLASSPATH .:$CATALINA_HOME/common/lib/servlet-api.jar
- Qui la stessa applicazione e' stata realizzata sia con un servlet:
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class Somma extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
gotoPage( "/somma.jsp", request, response );
}
private void gotoPage(String pageLocation,
HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher( pageLocation );
dispatcher.forward( request, response );
}
}
che con una pagina dinamica "somma.jsp" uguale a quella vista prima.
Quest'ultima implementazione di un'applicazione Web che in questo caso
puo' sembrare complicata oltre misura, e' invece quella consigliata.
Il motivo e' il seguente: essa applica il paradigma MVC (Model , View , Controller) che ha il pregio di scalare senza problemi. Il servlet e' in effetti il
controller che si interfaccia con l'utente e provvede a controllare i dati ricevuti. Esso richiama eventualmente (ma non in questo caso) altre classi (di solito Javabean) che eseguono operazioni su questi dati e gli mandano i risultati.
A questo punto il servlet richiama la pagina dinamica JSP che ha l'unico
scopo di realizzare la parte View, cioe' di formattare i risultati in una pagina web da presentare all'utente.
- Ecco finalmente l'accesso alla
tabella Persone di mysql , realizzato come servlet.
Questo il file di configurazione(web.xml) e questo
il codice del servlet.
Da notare che per funzionare il servlet ha bisogno del driver che va copiato
in
$CATALINA_HOME/common/lib
.