Abbiamo visto, in uno dei precedenti articoli, cosa siano le servlet, come crearle ed eseguirle sull'Application Server Tomcat. Adesso, scopriremo come tale processo possa essere reso ancora più facile, attraverso l'uso di uno dei più noti Ambienti di Sviluppo Integrati (detti IDE: Integrated Development Environment) basati sul concetto di Open Source: Eclipse.
Dove reperire Eclipse
Nella home page di Eclipse viene specificato lo scopo della comunità di Eclipse che è, appunto, quello di fornire una piattaforma di sviluppo ed un framework applicativo per lo sviluppo di software. Riportiamo uno stralcio di quanto riportato sul sito:
«Eclipse is an open source community whose projects are focused on providing a vendor-neutral open development platform and application frameworks for building software.»
Il componente base è l'Eclipse SDK, attualmente alla versione 3.2, disponibile per tutte le piattaforme (Windows, Linux, Solaris, ecc.). A tale componente è poi possibile aggiungere parecchi strumenti e plugin che forniscono ulteriori potenzialità ad Eclipse.
Il Progetto WTP (Web Tools Platform)
Uno dei componenti più utili, per lo sviluppo di applicazioni Web, è certamente quello appartenente al progetto Web Tools Platform (WTP). È possibile scaricare tale componente separatamente ed aggiungerlo ad Eclipse (previa installazione di altri componenti richiesti dal WTP) oppure utilizzare la versione all-in-one che contiene tutto il necessario (Eclipse SDK + WTP) per poter iniziare ad utilizzare da subito la piattaforma di sviluppo Web.
Scegliamo questa seconda soluzione e scarichiamo il file wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
per la piattaforma Windows (se la piattaforma utilizzata è differente, basterà scaricare il file relativo). Al termine del download sarà sufficiente eseguire l'estrazione di tutti i file contenuti nel file .zip su una directory a nostra scelta, avendo cura di mantenere la stessa struttura delle cartelle presente sul file compresso.
Il contenuto dell'archivio
Al termine dell'estrazione, nella directory "eclipse" (sotto la cartella di destinazione da noi scelta) troviamo tutti i file e le directory coinvolte. È interessante notare come il processo di installazione sia totalmente non invasivo a livello di sistema: in Windows, ad esempio, non vengono inserite chiavi nel registry, non vengono installate dll o file di sistema all'interno delle cartelle /Windows/System32
. L'unica accortezza che bisogna avere, prima di utilizzare Eclipse, è quella di avere installato una java virtual machine (ad esempio scaricando il Java SE Development Kit sul sito Sun) che Eclipse stesso possa utilizzare per compilare ed eseguire le applicazioni.
Eclipse in azione
È arrivato il momento di eseguire Eclipse. Lanciamo il file "eclipse.exe" e dopo la visualizzazione dello Splash Screen dell'applicazione, apparirà la seguente finestra di dialogo:
All'interno del campo di testo contrassegnato dalla etichetta Workspace andrà specificata la directory (comprensiva del path) che Eclipse utilizzerà per salvare i propri progetti. È possibile accettare quella fornita per default oppure modificarla a proprio piacimento. Attraverso la check box in basso alla finestra di dialogo sarà, quindi, possibile scegliere se utilizzare la medesima directory per tutti i progetti evitando di sceglierla di volta in volta. Una volta ultimata la selezione del workspace, verrà visualizzata una schermata di benvenuto.
Da questa schermata, selezionando l'icona contrassegnata dalla descrizione "Workbench", sarà possibile accedere all'ambiente di sviluppo vero e proprio:
Creiamo un progetto Web Dinamico
È il momento di sperimentare. Creeremo una semplice applicazione Web con una pagina HTML, una pagina JSP ed una Servlet che interagiscano attraverso l'uso del pattern MVC.
Selezioniamo la voce di menu File>New>Other. Dalla cartella Web, selezioniamo la voce "Dynamic Web Project" e clicchiamo sul pulsante "Next".
Nella finestra di dialogo successiva è necessario specificare un nome per il progetto, ed un "target runtime", ovvero l'Application Server su cui andrà effettuato il deploy della nostra applicazione. Scegliamo, avvalendoci del pulsante New associato (e delle relative finestre di dialogo), l'Application Server TomCat 5.5 .
Completiamo, quindi, la raccolta delle informazioni sul progetto dinamico attraverso la pressione del tasto "Finish". Eclipse, a questo punto, suggerirà di utilizzare la prospettiva di tipo J2EE, ovvero una visione del progetto adatta a gestire al meglio le risorse coinvolte in un'applicazione di tipo Java 2 Enterprise Edition. Scegliamo "Yes" nella finestra che appare.
Creiamo la Servlet
Nella parte precedente Abbiamo impostato Eclipse per lavorare su un progetto di applicazione Web. Possiamo iniziare in questa fase ad inserire componenti Web all'interno dell'applicazione.
Per prima cosa creiamo una servlet, denominata "SimpleController" che costituirà la parte di Controller della nostra semplice applicazione impostata secondo il pattern MVC.
Clicchiamo, dunque, con il pulsante destro del mouse sull'icona Servlets sul Project Explorer e riempiamo opportunamente i campi della successiva finestra di dialogo, come illustrato nelle due successive figure:
Codice generato automaticamente alla creazione della Servlet
package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class for Servlet: SimpleController
*/
public class SimpleController extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet
{
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public SimpleController()
{
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Creiamo la pagina HTML
In maniera molto simile, seguendo due semplici passi, è possibile creare anche una pagina HTML che useremo come pagina iniziale della nostra applicazione. Dal "Project Explorer" selezioniamo WebContent>New>HTML. Apparirà una maschera per inserire il nome del file.
Verrà generato il seguente codice di base su cui poi andremo a costruire la nostra pagina HTML:
Codice di base generato dal programma
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
Creiamo la pagina JSP
Costruiamo la pagina JSP che svolgerà il compito di presentare i dati finali all'utente. Anche in questo caso, Eclipse mette a disposizione delle semplici finestre di dialogo che consentono di ottenere una pagina JSP di base:
Pagina JSP generata automaticamente
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
Inseriamo un JavaBean
All'interno della nostra applicazione utilizzeremo un JavaBean che chiameremo "User" che si occuperà di svolgere la parte di business dell'applicazione ed una classe UserIO
che si occuperà, invece, del salvataggio vero e proprio dei dati su un file di testo. Il codice di tali classi è identico a quello visto nell'articolo sul pattern MVC ma lo riproponiamo per facilitare la lettura.
Aggiungiamo, dunque, la classe User alla nostra applicazione:
Ed impostiamone il codice in questo modo:
Codice della classe "User"
package business;
public class User
{
private String nome;
private String cognome;
private String eta;
public User() { }
public User(String nome, String cognome, String eta)
{
this.nome = nome;
this.cognome = cognome;
this.eta = eta;
}
public void setNome(String nome) { this.nome = nome; }
public String getNome() { return nome; }
public void setCognome(String cognome) { this.cognome = cognome; }
public String getCognome() { return cognome; }
public void setEta(String eta) { this.eta = eta; }
public String getEta() { return eta; }
}
Analogamente, creiamo la classe UserIO.
Codice della classe "UserIO"
package dati;
import java.io.*;
import business.*;
public class UserIO
{
public synchronized static void addItem(User user, String file)
throws IOException
{
PrintWriter out = new PrintWriter(new FileWriter(file, true));
out.println(user.getNome() + "-" + user.getCognome() + "-" + user.getEta());
out.close();
}
}
Personalizzare i file
Per completare il nostro lavoro modifichiamo il codice dei tre componenti web inseriti precedentemente nell'applicazione e otteniamo i file:
Generazione automatica del deployment descriptor
Sicuramente, uno dei compiti più gravosi e delicati per il programmatore è quello della scrittura del "deployment descriptor". Fortunatamente, Eclipse ci viene incontro. Basta cliccare due volte, infatti, sulla voce Deployment Descriptor>MySimpleWebApplication, sulla sinistra (nel Project Explorer) e visionare il file "web.xml" che Eclipse ha generato in automatico per noi.
Sarà poi possibile, qualora ce ne sia la necessità, modificare il contenuto del file stesso avvalendosi della struttura ad albero che Eclipse fornisce per leggere il contenuto dei nodi XML. La figura seguente illustra il file web.xml mostrato all'interno di Eclipse:
Deployment su Tomcat
Siamo al passo finale: quello del deployment della nostra applicazione su Tomcat. Anche in questo caso, Eclipse ci da una mano creando automaticamente un file con estensione ".war" pronto per essere caricato dal nostro Application Server.
Eseguiamo l'operazione di export cliccando dal Project Explorer su MySimpleWebApplication>Export>WAR file.
Mandiamo in esecuzione Tomcat, carichiamo il file .war dal Tomcat Manager e clicchiamo sul pulsante Deploy. Il gioco è fatto! La nostra MySimpleWebApplication è pronta per essere eseguita: