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:

  1. Interfaccia Servlet
  2. Classe astratta GenericServlet
  3. Classe astratta HttpServlet
  4. 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:

  1. Caricamento del Driver
  2. Ottenimento della Connessione (Connection)
  3. Creazione ed esecuzione dell'istruzione SQL (Statement)
  4. 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).

Voci correlate: