Architettura JDBC, Servlet e Java I/O: Fondamenti dello Sviluppo Web
Classificato in Informatica
Scritto il in
italiano con una dimensione di 6,89 KB
Tipi di driver JDBC
Esistono quattro diversi tipi di driver JDBC definiti dalle specifiche Sun Microsystems:
- Bridge 1: I driver utilizzano il sistema come un gateway o un ponte. Un esempio è il JDBC-ODBC. Non è la soluzione migliore, poiché in molti casi è necessario installare uno speciale software sul client, oltre ad essere un po' lento negli accessi al database.
- Bridge 2: Questo tipo di driver è conosciuto come API nativa; il driver contiene codice Java in cui vengono effettuate chiamate a metodi nativi del database in C o C++ per l'accesso ai dati. A volte è necessario installare un software client per utilizzare questi controller.
- Bridge 3: I driver JDBC utilizzano un'applicazione per comunicare con il server tramite socket intermedi; il programma client richiede un driver specifico per l'API. Questo tipo di driver ha il vantaggio di non richiedere software aggiuntivo sul client.
- Bridge 4: Questi driver utilizzano protocolli di rete inclusi nel DBMS (Database Management System). Il driver comunica direttamente con il database utilizzando i socket Java. È la migliore tra le quattro tipologie, essendo scritta interamente in Java. La maggior parte di questi driver è fornita direttamente dal produttore del DBMS.
Il metodo createStatement() crea un canale aperto attraverso il quale è possibile eseguire query. Il metodo executeQuery() restituisce un oggetto ResultSet, che può essere utilizzato per accedere a ciascuno dei record restituiti.
Requisiti per eseguire una Servlet o un JSP
- Un programma per server Web HTTP: Può essere uno dei più popolari come il server Apache HTTP o IIS (fornito con Windows NT 4.0, Windows 2000 Server o Windows XP Professional).
- Server che supportano le servlet: Un contenitore (container) compatibile.
- I pacchetti delle classi Servlet:
- javax.servlet
- javax.servlet.http
Un'applicazione web è una raccolta di servlet, pagine JSP, classi Java, descrizioni della presentazione, documenti statici HTML, XHTML, immagini e altre risorse che possono essere pacchettizzate ed eseguite su server diversi di fornitori differenti. Un'applicazione web può essere definita come il livello Web di qualsiasi applicazione. Il contenitore è ciò che ospita l'applicazione web, ovvero la struttura delle directory in cui sono collocati tutti i file necessari per l'esecuzione.
Fasi di evoluzione di una pagina JSP
Una pagina JSP attraversa tre fasi principali nel suo ciclo di vita:
- Codice sorgente JSP: Scritto dallo sviluppatore in un file di testo con estensione .jsp. Consiste in un misto di HTML, istruzioni Java, direttive JSP e azioni che descrivono come costruire un sito Web per rispondere a una richiesta del cliente.
- Codice sorgente Java: Il container JSP traduce il codice sorgente JSP nel codice sorgente di una servlet Java equivalente. Questo codice è memorizzato in un'area di lavoro ed è utile per il debugging.
- Classe Java compilata: Come ogni programma Java, la servlet generata viene compilata in bytecode, risultando in un file .class pronto per essere caricato ed eseguito dal server.
Elementi JSP
Esistono tre tipi di elementi JSP:
- Elementi di script (scripting): Includono scriptlet, espressioni e dichiarazioni.
- Direttive.
- Azioni.
Dichiarazioni
Una dichiarazione permette di definire nuove variabili e metodi nel file di classe generata. La sintassi è:
<%! sentenza; [ ... %>
Scriptlet
Uno scriptlet è un insieme di istruzioni Java contenute in una pagina HTML. Sono poste tra i tag <% e %> affinché l'interprete JSP possa processare il codice interno. La sintassi è:
<% [sentenze; ...] %>
Oggetto Request
È un'istanza di javax.servlet.ServletRequest e contiene i dati inviati al server. Ad esempio, il metodo getParameter() dell'oggetto request recupera i valori inviati tramite un form o un URL:
<% String name = request.getParameter("nome"); %>
Gestione dei flussi con Java.io
Un flusso (stream) è un sistema di comunicazione implementato nel pacchetto java.io per archiviare e recuperare informazioni su vari dispositivi.
Standard Streams
Java permette di catturare flussi in entrata e in uscita tramite dispositivi standard:
- Flusso di input: Gestito dalla classe System.in, riceve solitamente dati dalla tastiera. Utilizza il metodo read() per leggere i caratteri.
- Flusso di output: Gestito dalla classe System.out, invia dati allo schermo. Utilizza i metodi print() e println().
- Flusso di errore: Gestito dalla classe System.err, garantisce che l'output dei messaggi di errore venga visualizzato sul monitor dell'utente.
Classi per l'accesso ai file
Java fornisce due classi astratte per gestire i flussi di dati: java.io.InputStream e java.io.OutputStream. Per l'interazione specifica con i file si utilizzano:
- FileInputStream: Per aprire un canale di comunicazione in lettura.
- FileOutputStream: Per la scrittura di un file di output.
Entrambe le classi accettano nel costruttore il nome del file o un oggetto di tipo File.
La classe File
La classe File incapsula l'interazione con il file system. Oltre a permettere l'accesso, consente di ottenere metadati come la dimensione, il tipo, la data di creazione e i permessi di accesso.
DataOutputStream e DataInputStream
La classe DataOutputStream estende OutputStream aggiungendo la possibilità di scrivere dati "complessi" (tipi primitivi come int, float, double, char e String) in un formato portabile.
La classe DataInputStream è progettata per leggere i dati generati da un oggetto DataOutputStream. Garantisce che i file scritti su una piattaforma siano leggibili correttamente su qualsiasi altra, indipendentemente dall'architettura (little-endian o big-endian).