Concetti Essenziali di Servlet, JSP, JDBC e JavaBeans: Domande Frequenti
Classificato in Informatica
Scritto il in italiano con una dimensione di 13,2 KB
Concetti sulle Servlet
Quale di queste affermazioni sulle servlet è falsa?
Risposta: A ogni servlet è associato un solo thread. (Falso)
Quale dei seguenti compiti non è relativo al container?
Risposta: Effettua la compilazione della servlet.
Quale tra i seguenti metodi non viene utilizzato nel protocollo HTTP?
Risposta: doService()
Nella subdirectory WEB-INF non è presente:
Risposta: la cartella webapps.
Quale tra i seguenti non è un vantaggio delle servlet rispetto alle CGI?
Risposta: Prototipazione rapida.
Quale tra i seguenti non è uno svantaggio delle servlet rispetto alle CGI?
Risposta: Non è possibile superare la limitazione stateless del protocollo HTTP.
Ordina la gerarchia completa di una servlet:
- Interfaccia
Servlet
- Classe astratta
GenericServlet
- Classe astratta
HttpServlet
- Classe concreta (implementazione della servlet)
Verifica di Affermazioni su Servlet e CGI
Il programma CGI è scritto in un linguaggio di programmazione server-oriented.
Risposta: Falso.
Gli script CGI vengono eseguiti dal sistema operativo.
Risposta: Vero.
Le servlet vengono eseguite dal sistema operativo.
Risposta: Falso (vengono eseguite dal container/Servlet Engine).
Il Web server svolge la funzione di container occupandosi della gestione del ciclo di vita delle servlet.
Risposta: Vero (più precisamente, il Servlet Container, che può essere integrato o separato dal Web Server).
Una servlet interagisce con un Web client attraverso il paradigma request/response.
Risposta: Vero.
Le servlet usate nel Web sono estensioni della classe javax.servlet.Servlet
.
Risposta: Falso (tipicamente estendono javax.servlet.http.HttpServlet
, che a sua volta implementa/estende la gerarchia basata su Servlet
).
Con deployment si intendono le operazioni eseguite per collaudare una servlet.
Risposta: Falso (il deployment è il processo di installazione e configurazione dell'applicazione web nel container).
La cartella webapps è la directory di primo livello di tutte le applicazioni su Tomcat.
Risposta: Vero.
Il file web.xml è chiamato anche Deployment Descriptor.
Risposta: Vero.
Concetti su JDBC e Database
ODBC offre all'applicazione un'interfaccia che consente l'accesso a un DB indipendente da:
- Il particolare dialetto di SQL
- La posizione del DBMS (locale o remota)
Con Access non è possibile evitare la definizione di un DSN per puntare a file MDB.
Risposta: Falso (si possono usare connessioni DSN-less).
L'acronimo WAR significa:
Risposta: Web Application Archive.
ODBC è l'acronimo di:
Risposta: Open DataBase Connectivity.
I driver JDBC possono essere di quattro diverse tipologie. Indica quello non corretto:
Risposta: Tipo Direct Bridge for Database Middleware (Non è una classificazione standard dei 4 tipi di driver JDBC).
L'utilizzo di JDBC è molto semplice e può essere schematizzato in quattro operazioni nell'ordine:
- Caricamento del Driver
- Ottenimento della Connessione (Connection)
- Creazione ed esecuzione dell'istruzione SQL (Statement)
- Elaborazione dei risultati (ResultSet)
Le connessioni JDBC occupano risorse, in un ambiente multiutente e multitasking è opportuno:
- Assicurarsi di chiuderla al termine del suo utilizzo
- Aprire una connessione solo quando necessario
- Non aprire/chiudere connessioni inutilmente (usare connection pooling se possibile)
Quale tra i seguenti è un percorso corretto per un driver JDBC-ODBC?
Risposta: sun.jdbc.odbc.JdbcOdbcDriver
(Nota: questo driver è stato rimosso da Java 8).
Verifica di Affermazioni su JDBC
JDBC racchiude una serie di classi per poter accedere alle basi di dati.
Risposta: Vero.
La Sun ha incluso JDBC nel JDK a partire dalla versione 2.1.
Risposta: Falso (JDBC è stato introdotto prima, con JDK 1.1).
Il codice ODBC binario e il codice del DBMS client devono essere caricati su ogni macchina client che usa JDBC-ODBC bridge.
Risposta: Vero.
Il Bridge JDBC-ODBC rispetta la filosofia WORA (Write Once, Run Anywhere).
Risposta: Falso (dipende dalla presenza e configurazione del driver ODBC sulla piattaforma).
La tecnica più corretta per l'utilizzo di Connector/J è quella di copiarla all'interno della directory jre/lib/ext
, nella cartella che contiene l'installazione di Java.
Risposta: Falso (la pratica raccomandata è includere il JAR nel classpath dell'applicazione, ad esempio nella cartella `WEB-INF/lib` per le applicazioni web).
Se la connessione va a buon fine, viene creato un oggetto java.sql.Statement
.
Risposta: Falso (la connessione restituisce un oggetto java.sql.Connection
; lo Statement
viene creato successivamente dalla connessione).
Le query SQL memorizzano il risultato in un oggetto java.sql.ResultSet
.
Risposta: Vero.
Concetti su JSP (JavaServer Pages)
Quale tra i seguenti oggetti NON è implicito direttamente in service()
?
Risposta: (Manca la domanda completa e le opzioni)
Quale tra le seguenti non è una direttiva JSP?
Risposta: session (session
è un oggetto implicito e un attributo della direttiva page
, non una direttiva a sé stante come page
, include
, taglib
).
Quale tra i seguenti non è un attributo della direttiva page
?
Risposta: include (include
è un'altra direttiva).
Verifica di Affermazioni su JSP
Un'applicazione Web viene impacchettata come file WAR.
Risposta: Vero.
Una JSP è un'astrazione di alto livello per rappresentare delle servlet.
Risposta: Vero (le JSP vengono compilate in servlet).
Una pagina JSP è formata da codice HTML con incapsulato al suo interno delle direttive JSP.
Risposta: Vero (e altri elementi JSP come scriptlet, espressioni, dichiarazioni, azioni standard, tag custom).
Una pagina JSP prima viene compilata e quindi viene copiata nella cartella classes.
Risposta: Falso (viene compilata in una servlet Java (.java) e poi in bytecode (.class), ma la gestione dei file compilati è interna al container, non necessariamente nella cartella `classes` dell'applicazione).
Come per le servlet il server deve avere a disposizione l'ambiente JRE.
Risposta: Vero (il container JSP/Servlet è un'applicazione Java e richiede un JRE per funzionare).
Le scripting-oriented tag sono definite da delimitatori entro cui è presente lo scripting.
Risposta: Falso (questa descrizione si adatta meglio a scriptlet `<% %>`, espressioni `<%= %>` e dichiarazioni `<%! %>`. I tag sono elementi simili a HTML/XML).
Le XML-oriented tag permettono di definire i medesimi tipi di comandi dei tag scripting-oriented.
Risposta: Vero (la sintassi XML per JSP permette di esprimere la stessa logica degli elementi di scripting).
A ogni chiamata di una pagina JSP il container ne crea un'istanza (genera un thread).
Risposta: Falso (il container gestisce un pool di thread per servire le richieste alla servlet generata dalla JSP; di norma non crea una nuova istanza della servlet per ogni richiesta).
Le scriptlet in una pagina JSP devono necessariamente essere scritte in Java.
Risposta: Falso (anche se Java è lo standard e il più comune, la specifica JSP permette teoricamente l'uso di altri linguaggi di scripting, se supportati dal container).
Le direttive non producono nessun output visibile.
Risposta: Vero (influenzano la compilazione o la gestione della pagina).
Concetti su JavaBeans
Quale affermazione è errata per un JavaBean?
Risposta: Ha due metodi definiti di default (non ci sono metodi definiti di default specifici per tutti i bean, dipendono dalle proprietà).
Che cosa non descrive la scheda di "specifica del Bean"?
Risposta: Il tipo del costruttore (la specifica si concentra su proprietà, metodi ed eventi).
Per utilizzare un Bean in una pagina JSP si utilizza la sintassi:
Risposta: L'azione standard <jsp:useBean>
.
Quale tra le seguenti opzioni non è prevista per l'attributo scope
dell'istruzione <jsp:useBean>
?
Risposta: response (gli scope validi sono page
, request
, session
, application
).
Verifica di Affermazioni su JavaBeans e Architetture
L'architettura J2EE Model 1 è costituita da:
Risposta: Due livelli (Presentation e Business/Data logic spesso mescolati nelle JSP).
Se xxx è la root del mio sito, il package CiaoBean può avere il seguente "url-pattern":
Risposta: servlets/servlet/mieiBean/CiaoBean
(Un URL pattern si applica tipicamente alle servlet, non direttamente ai package dei Bean. La domanda sembra mal formulata o contestualizzata).
Un JavaBean è un componente nella tecnologia Java, cioè una classe.
Risposta: Vero (una classe che segue specifiche convenzioni).
I Java Data Bean sono particolari Bean che gestiscono la data.
Risposta: Falso (non è una categoria standard di Bean; un Bean può gestire dati di qualsiasi tipo, incluse le date).
I JavaBean rispettano le direttive che realizzano l'incapsulamento.
Risposta: Vero (proprietà private accessibili tramite metodi getter/setter pubblici).
Nei JavaBean tutti gli attributi devono essere di tipo privato.
Risposta: Vero (questa è una convenzione fondamentale per l'incapsulamento).
Gli attributi nella JSP saranno indicati col termine proprietà (property).
Risposta: Vero (quando si accede ai Bean tramite azioni come <jsp:getProperty>
).
Le proprietà di tipo boolean sono: getAttributo()
e setAttributo()
.
Risposta: Falso (per le proprietà boolean, il metodo getter convenzionale è spesso isAttributo()
, anche se getAttributo()
è accettato).
Le classi Bean devono implementare la classe Serializable
.
Risposta: Vero (è una delle convenzioni standard, specialmente se i Bean devono essere passivati o trasferiti).
Il nome dei metodi e il nome dell'attributo che gestiscono devono essere uguali.
Risposta: Falso (devono seguire la convenzione: getPropertyName()
/setPropertyName(Type value)
per la proprietà propertyName
. Il nome del metodo include il nome della proprietà con la prima lettera maiuscola).
La chiamata a un metodo di un Bean da parte di una pagina JSP avviene con il tag <jsp:getProperty>
.
Risposta: Vero (per i metodi getter).
Per modificare gli attributi della classe Bean si utilizza <jsp:setProperty>
.
Risposta: Vero (per i metodi setter).
Per permettere la visibilità di un Bean deve essere modificato il file web.xml.
Risposta: Falso (la visibilità di un Bean usato in una JSP tramite <jsp:useBean>
non richiede configurazione in web.xml; web.xml si usa per configurare servlet, filtri, listener, ecc.).
La pagina JSP richiama il metodo e riceve una variabile.
Risposta: Falso (la JSP richiama un metodo, tipicamente tramite un'azione standard o EL, e il valore restituito dal metodo viene utilizzato, ad esempio, per essere inserito nell'output HTML).