Post

Il Polimorfismo: descrizione ed esempi

DOMANDA: Che cos'è il polimorfismo in Java? RISPOSTA: Uno degli elementi fondamentali della programmazione ad oggetti (e quindi anche di Java) è proprio il polimorfismo . Con questo termine, scomponendo ad intuito, possiamo dedurne il significato: poli - morfismo -> multi-forme (non formalizziamoci sull'etimologia del termine).  Proprio come suggerito dall'intuito, il polimorfismo altro non è che la capacità di un oggetto di poter assumere diverse forme. Il concetto è spesso ostico ai neofiti della programmazione ad oggetti, ma in realtà, con un esempio pratico si può cominciare a capire la potenza di questo sistema. ESEMPIO Un leone, una mucca e un cavallo avranno tutti e tre la capacità di emettere un proprio verso. Vediamolo nel dettaglio: package polimorfismo; public class Leone { public void emettiVerso(){ System.out.println("RUGGITO"); } } package polimorfismo; public class Mucca { public void emettiVerso(){ System.out.pr

Differenza tra jsp:include e @ include file

DOMANDA: Che differenza c'è tra:  <%@ include file="pagina.jsp" %>  e  <jsp:include page="pagina.jsp">? RISPOSTA: Cerchiamo di spiegare brevemente la differenza e subito dopo ne vedremo gli effetti con dei semplici esempi. DIRETTIVA @INCLUDE <%@ include file="pagina.jsp" %> E' una direttiva che richiama il file indicato tra virgolette (nel nostro esempio pagina.jsp ) facendolo diventare parte della pagina in cui è incluso. Detto in parole semplici è come se facessimo un copia e incolla del contenuto del file pagina.jsp in corrispondenza dell'inclusione. Questo implica che non è necessario includere un file specifico, ma viene accettata qualunque tipologia, anche un semplice .txt . DIRETTIVA JSP:INCLUDE <jsp:include page="pagina.jsp"> In questo caso invece non avviene una semplice sostituzione. Il file indicato come valore dell'attributo page, viene compilato separatamente com

Upload di un file in Java con le Servlet 3.0

DOMANDA: Esiste un modo per effettuare l'upload di un file via JSP/Servlet senza utilizzare librerie di terze parti? RISPOSTA: Una delle problematiche che più spesso si presenta a chi progetta siti web è l' upload di un file da un form a una JSP/Servlet. Sino all'avvento delle Servlet 3.0 e all'introduzione dell'annotazione @MultipartConfig era necessario utilizzare le ottime librerie messe a disposizione da O'reilly (COS) o da Apache (FileUpload) . In realtà anche senza librerie di terze parti e Servlet 3.0 era possibile effettuare un upload, ma sicuramente il codice da utilizzare non era dei più puliti. Ve lo dimostro con un esempio vecchia maniera (senza utilizzo di librerie di terze parti) che, dopo aver letto il file dalla request, lo salva sul disco del server: Il form .JSP per l'upload del file: <html> <head><title>Test File Upload</title></head> <body> <form name

Scrivere un file su un percorso di rete (protocollo ftp)

DOMANDA: Come si crea e scrive un file in remoto? RISPOSTA: La scrittura di un file in remoto (su un percorso di rete o share NAS) si può effettuare facilmente attraverso l'utilizzo del protocollo ftp e (naturalmente) Java!  Il seguente snippet costruisce una connessione verso il nostro percorso di rete ed esegue il salvataggio di un file di testo ( prova.txt ) con contenuto ciao mondo! . package rete; public class ScritturaFileRemota { public static void main (String [] args){ URL urlDiRete = new URL("ftp://"+username+":"+password+"@"+percorso_di_rete+"/prova.txt"); URLConnection connessioneDiRete = urlDiRete.openConnection(); connessioneDiRete.setDoOutput(true); BufferedWriter in =  new BufferedWriter(new OutputStreamWriter(connessioneDiRete.getOutputStream())); in.write("ciao mondo!"); in.close(); } } Se l'accesso al vostro percorso di rete è sogge

Catturare le coordinate del Mouse

DOMANDA: Come posso ottenere le coordinate della posizione del puntatore del mouse in Java? RISPOSTA: Per catturare le coordinate del mouse in Java è necessario utilizzare la classe java.awt.MouseInfo che ci mette a disposizione il metodo getPointerInfo() attraverso il quale possiamo ottenere le informazioni riguardo le coordinate del puntatore. Nell'esempio qui di seguito abbiamo la classe CoordinateMouse che ogni 50 millisecondi aggiorna questi due valori mostrandoli sulla console: package mouseclick; import java.awt.MouseInfo; public class CoordinateMouse { public static void main(String[] args) throws InterruptedException{ while(true){ Thread.sleep(50); System.out.print("(x) "+MouseInfo.getPointerInfo().getLocation().x); System.out.print(" - "); System.out.print("(y) "+MouseInfo.getPointerInfo().getLocation().y); System.out.println(); } } } Eseguendo l'esempi

Modificare una riga di un file

DOMANDA: Come si modifica una riga di un file senza creare un file di appoggio duplicato? RISPOSTA: La soluzione più semplice, ma anche più dispendiosa, è quella di leggere ciclicamente dal file di origine una riga, controllare se è quella da modificare e scriverla in un nuovo file continuando sino all' EOF (end-of-file); al termine si cancella il file di origine e si lascia il nuovo. Ovviamente tutta questa procedura è molto laboriosa, in particolare di fronte a file di dimensioni notevoli. L'esempio che vi proponiamo oggi fa in modo di modificare al volo la riga e di scriverle direttamente sullo stesso file di origine : package file; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class ModificaFile { public static void main(String[] args) { FileInputStream fstream = null; Data

Meglio JBoss AS o Tomcat?

DOMANDA: E' meglio Apache Tomcat o JBoss Application Server? RISPOSTA: Come tutte le grandi dispute, l'unica vera risposta esatta è: "Dipende!" . In breve Tomcat fornisce un Servlet Container che supporta tutte le specifiche delle servlet (la versione 7 di Tomcat supporta anche le Servlet 3.0). JBoss AS (Application Server) , oltre al supporto delle Servlet 3.0 supporta tutto JEE 6 .  Ad intuito si può quindi capire come Tomcat sia più abbastanza rispetto a JBoss AS e, qualora necessitassimo di altre potenzialità incluse in JEE , abbiamo la facoltà di aggiungere manualmente le varie componenti. Ad esempio, se volessimo aggiungere Hibernate all'interno del nostro Apache Tomcat , basterà scaricare ed aggiungere le giuste librerie al server. Certo, di sicuro è richiesta una certa padronanza e conoscenza del funzionamento di Tomcat, ma non è affatto complicato. Se, invece, la nostra applicazione ha bisogno di un supporto integrato a diverse tec