Java Server Pages & Programmazione Server-Side

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Java Server Pages & Programmazione Server-Side"

Transcript

1 Java Server Pages & Programmazione Server-Side

2 Programmazione Server Side Un applicazione è in esecuzione su una macchina remota piuttosto che esecuzione locale. L applicazione può ricevere le connessioni da parte dei client (Browser Web). L applicazione elabora le richieste (HTTP) ed invia delle risposte ai client (HTML). Il servizio è offerto da Application Server (e.g: Tomcat).

3 Java Server Pages E uno strumento derivato da Java, che utilizzeremo come linguaggio autonomo. E la risposta di Sun alla tecnologia ASP di Microsoft. Una pagina JSP può essere scritta tramite un semplice editor di testo, o con strumenti più complessi (e.g: Eclipse). Tomcat si occupa di tutto il lavoro necessario all utilizzo della pagina (compilazione). E impossibile parlare di JSP senza conoscere un poco Java.

4 Java Linguaggio strettamente ad oggetti. Linguaggio fortemente tipizzato. Ogni oggetto Java può avere campi (variabili) e metodi (funzioni). Si usa la notazione nomeoggetto.nomemetodo() Lo standard utilizza la notazione camelcase.

5 Java Campi Oggetti Metodi Classi Costanti nome, nomecampo, nomedelcampo nome, nomeoggetto.nomemetodo(parametro1, parametro2 ),.nomemetodo(), nome() NomeClasse NOME, NOME_COSTANTE

6 Java (Sintassi) Dichiarazione di variabili (tipi primitivi) int a; int a = 5; boolean acceso = false;

7 Java (Sintassi) Dichiarazione di variabili (puntatori a oggetti) TipoOggetto obj; // puntatore ad oggetto TipoOggetto obj = new TipoOggetto(...); TipoOggetto2 obj2 = new TipoOggetto2(...); char c = obj.metodo(...); // metodo ritorna un char int a = obj2.campo; // campo è di tipo int

8 Gli array Java (Sintassi) I vettori sono di tipi di dato omogeneo: int a[]; // a è un puntatore ad array di interi int b[] = new int[10]; // b punta ad un array esistente TipoOggetto c = new TipoOggetto[5]; // c punta ad un array di 5 puntatori ad oggetti

9 Java (Sintassi) int a[]; a[0] = 5; // ERRORE! int b[] = new int[10]; b[0] = 2; // OK TipoOggetto c[] = new TipoOggetto[5]; c[0].metodo(...); // ERRORE! c[0] = new TipoOggetto(...); // OK c[0].metodo(...); // OK

10 Java (Sintassi) Gli array devono essere composti da un solo tipo di elementi. Sono possibili array di array (di lunghezza diversa): int a[][]; a = new int[10][]; a[0] = new int[7]; a[1] = new int[12]; La lunghezza si ottiene con lengh.

11 Java (Sintassi) a.length 10 a[0].length 7 a[1].length 12 a[2].length ERRORE!

12 Java (Sintassi) Uso e significato di null. Quando un puntatore non è stato inizializzato, esso è equivalente ad uno speciale tipo primitivo chiamato null. L'uso di null è necessario per: Eseguire test di confronto. Distruggere oggetti. Inizializzare esplicitamente i puntatori.

13 Uso e significato di null. int a[];... if (a==null) { } a = new int[10]; Java (Sintassi) a[0] = 5; // non incorriamo in errori qui

14 Uso e significato di null. Java (Sintassi) TipoOggetto a = new TipoOggetto();... a = null; Il puntatore a ora non referenzia più l'oggetto di classe TipoOggetto. La memoria viene automaticamente liberata dall'ambiente Java (nessun bisogno di operazione di free come in C) a meno che altri puntatori non referenzino lo stesso oggetto (Garbage Collector).

15 Java (Sintassi) Uso e significato di null. TipoOggetto a = new TipoOggetto(); TipoOggetto b = a;... a = null; L'oggetto continua ad esistere perché esiste ancora un riferimento ad esso. if (a==null)... // Vera if (b==null)... // Falsa

16 Java (Sintassi) Uso e significato di new. L'operatore new ha la funzione di creare un nuovo oggetto o un array del tipo opportuno. Per gli array, vale la sintassi vista precedentemente. Per gli oggetti, deve essere richiamato un metodo particolare chiamato costruttore. Possono esistere più tipi di costruttore per ogni classe: String str1 = new String( Hello world! ); String str2 = new String( Hello world!, UTF-8 ); String str3 = new String(bArr); // barr di tipo char[]

17 Costrutto condizionale if (condizione) comando; if (condizione) { } comando1; comando2;... Java (Sintassi) La condizione deve essere (o ritornare) un valore boolean (tipo primitivo Java).

18 Java (Sintassi) Costrutto condizionale (esempi) if (obj.getvalore()) comando; // getvalore DEVE ritornare un booleano! if (a>25) { }... if (b==false) comando; // equivalente a if (!b)

19 Java (Sintassi) Costrutto condizionale (serie) if (condizione1) {... } else if (condizione2) {... }... else {... }

20 Ciclo while while (condizione) {... } Java (Sintassi) while (true) {... } // loop infinito Prosegue finché la condizione è vera

21 Ciclo for Java (Sintassi) for (inizilizzazioni;condizione;incrementi) operazione; for (int i=0;i<20;i++) operazione; for (;a>25;) {... break; } // equivalente ad un costrutto if L'operatore break interrompe il ciclo e riporta l'esecuzione alla prima riga successiva.

22 Ciclo for Java (Sintassi) for (;true;) {... } // equivalente al costrutto while infinito Esiste anche l'operatore continue, che termina la corrente esecuzione del ciclo e fa così ripetere condizione e incrementi: for (int i=0;i<1000;i++) { } if (i % 2!=0) continue; operazione; // Eseguita solo per i numeri pari

23 Java (Package) Java possiede un grande numero di pacchetti per i più svariati compiti. La suddivisione di questi oggetti è fatta in librerie chiamate package. L'importazione di un package viene fatta tramite una serie di comandi import posti all'inizio del file. import java.util.*; // Tutte le classi in java.util E' possibile importare solo una classe appartenente ad un package, oppure l'intero contenuto del package. La differenza non è nell'efficenza (vengono esplicitamente importare solo le classi effettivamente utilizzate), ma solo nella chiarezza del codice: import java.util.vector; // Solo Vector in java.util

24 Java (Package) I package possono essere costruiti e suddivisi come una serie di sottopackage creando una gerarchia ad albero. Importare tutte le classi di un package (import nome.*) non vuol dire importare anche tutte le classi dei possibili sottopackage. import java.util.*; // Tutte le classi in java.util import java.util.zip.zipfile; // classe ZipFile in java.util.zip

25 Gerarchia degli oggetti in Java Programmando in Java bisogna tenere sempre presente uno dei principi della programmazione ad oggetti chiamato ereditarietà. Tutti gli oggetti in Java estendono la classe nativa Object, oppure estendono altre classi che a loro volta estendono Object. Es: La classe Integer (che gestisce i numeri interi in formato di oggetti) estende la classe Number che a sua volta estende Object. La classe Float a sua volta estende Number.

26 Gerarchia degli oggetti in Java Questo vuol dire che ovunque sia richiesto un certo tipo di dato, possiamo sempre utilizzare un tipo che sia estensione del tipo richiesto. Ovunque è richiesto un tipo Object, vuol dire che è possibile utilizzare un qualunque oggetto Java.

27 Java (Alcuni oggetti utili) Oggetti per la connessione a database. Oggetti String. Vector e Hashtable. Classi wrapper.

28 Oggetti in java.sql Connection connessione tra l ambiente Java e il database. ottenuto da un oggetto Connection. Statement Possiede metodi per eseguire query SQL sul database. PreparedStatement Possiede metodi per eseguire query SQL preparate. ResultSet Se l esecuzione SQL ritorna risultati (e.g: SELECT), questi vengono memorizzati in un oggetto ResultSet.

29 Oggetti String In Java le stringhe sono sempre trattate come oggetti (gli array di caratteri non sono stringhe!). Istanziare oggetti String: Forma canonica str = new String( Hello World! ); Usata solo per fare copie di stringhe. Forma breve str = Hello World! ; Se str è un oggetto, allora avrà dei metodi: str.touppercase() HELLO WORLD! str.charat(2) l // Singolo apice per i caratteri

30 Oggetti String Concatenazione di stringhe: operatore +. str+ \nciao Mondo ; Hello World! Ciao Mondo Funziona solo tra stringhe? No! str+ \n +7; Hello World! 7

31 Oggetti String str = Numero +7; // Numero 7 str = Numero +7+1; // Numero 71!!!ATTENZIONE!!! str = Numero +(7+1); // Numero 8 Ogni operazione tra stringhe ritorna sempre una nuova stringa: str + persa ; // str non viene modificata! La nuova stringa creata non è stata assegnata e quindi viene persa... Da ricordare bene Gli oggetti String sono immutabili

32 Vector & Hashtable Sono classi del package java.util e condividono alcune caratteristiche e potenzialità. La classe Vector è una versione ad oggetti degli array, di cui vengono superati alcuni limiti. La dimensione iniziale può essere superata, permettendo la memorizzazione di una quantità di oggetti che può essere da principio sconosciuta. L'oggetto Vector aumenta automaticamente la capienza se necessario. Può contenere oggetti di tipo Object, quindi un qualsiasi oggetto Java; il tipo degli elementi contenuti in un Vector non deve essere per forza omogeneo. Possiede metodi per inserire, estrarre, scansire...

33 Vector Vector v = new Vector(10); v.add( Stringa 1 ); // alla posizione 0 v.add( Stringa 2 ); // alla posizione 1 v.add(new TipoOggetto(), 1); // alla posizione 1 Con l'ultima operazione la seconda stringa viene spostata a destra per fare posto al nuovo oggetto. String str = (String)(v.get(0)); // Ottengo Stringa 1 Così come i Vector ospitano tipi di dato Object, così essi ritornano solo Object. Per trasformare l'oggetto nel tipo originale, occorre eseguire una conversione, un'operazione di casting.

34 Procedura di cast In Java l'operazione di cast può essere eseguita solo tra tipi compatibili, ossia percorrendo verso il basso la gerarchia delle classi. Il cast di un oggetto di tipo B in un oggetto di tipo A... A var1 = (B)var2;...è possibile solo se B è un discendente di A. Il cast non esiste solo per gli oggetti: long l = l; int a = (int)l;

35 Hashtable Gli Hashtable sono oggetti che memorizza i dati secondo i principi delle tabelle hash, associando univocamente coppie di chiavi e valori, dove le chiavi non sono necessariamente numeri ma anche stringhe e altri oggetti. Hashtable hash = new Hashtable(); hash.put( chiave1, Ciao ); hash.put( chiave2,new TipoOggetto()); hash.put( chiave1, Mondo ); L'ultima operazione in questo caso sovrascrive la prima stringa inserita. String str = (String)hash.get( chiave1 ); Infatti str sarà uguale a Mondo.

36 Scorrere Vector & Hashtable Gli oggetti Vector potrebbero essere analizzati elemento per elemento allo stesso modo degli array, ma spesso si preferisce un altro modo: java.util.enumeration e; // Così non devo fare import for (e = v.elements() ; e.hasmoreelements() ;) { Object o = e.nextelement();... // Faccio qualcosa con o } Questo modo è praticamente obbligatorio per gli elementi memorizzati in un hashtable.

37 Classi wrapper Tornando ai Vector, essi presentano il limite di poter memorizzare un qualsiasi tipo di oggetto Java, ma cosa succede se il dato che vogliamo memorizzare non è un oggetto? Vector v = new Vector(); v.add(5); // ERRORE! Le classi wrapper si occupano di questo problema, e di altri. Ne esiste una per ogni tipo di dato primitivo di Java: Integer, Float, Double, Boolean, Character, Long... Il loro scopo è principalmente quello di fornire un guscio al tipo primitivo che rappresentano, in modo tale da poter essere utilizzato dove è richiesto un oggetto.

38 Vector v = new Vector(); Integer i = new Integer(5); v.add(i); // OK int a = i.intvalue(); long b = i.longvalue(); Classi wrapper

39 Classi wrapper In più raggruppano informazioni e funzionalità generali, utili per lavorare e gestire i tipi primitivi. Es: qual'è il massimo valore intero rappresentabile? int massimo = Integer.MAX_VALUE; Alle classi wrapper sono lasciate le operazioni di conversione e trasformazione (le atoi e itoa del C...): Integer i = new Integer(5); String st = i.tostring(); // Conversione in stringa... int val = Integer.parseInt( 105 ); //... e da stringa

40 Notazione utile Come il C, Java offre la notazione breve per il costrutto IF- THEN-ELSE, particolarmente utile in Java (estremamente leggibile utilizzata con stringhe): // Forma breve String str = Il valore letto è +(parametro<5? minore di 5 : maggiore/uguale a 5 ); // Forza canonica String str = Il valore letto è ; if (parametro<5) str+= minore di 5 ; else maggiore/uguale a 5 ;

41 JSP

42 Costruire pagine JSP Le pagine JSP sono (praticamente) pagine HTML. In ogni momento è possibile smettere di inserire codice HTML e iniziare la scrittura di codice Java. Il codice Java verrà eseguito dal server alla richiesta della pagina, e non verrà ritornato al client.

43 Costruire pagine JSP page language="java"%> <HTML> <HEAD> </HEAD> <BODY> <H1>Hello World!</H1> Ora eseguirò una moltiplicazione: <% int a = 7 * 3; %> </BODY> </HTML> HELLO WORLD Ora eseguirò una moltiplicazione:

44 Costruire pagine JSP page language="java"%> <HTML> <HEAD> </HEAD> <BODY> <H1>Hello World!</H1> Ora eseguirò una moltiplicazione: <% int a= 7 * 3; out.println( <BR> +a); %> </BODY> </HTML> HELLO WORLD Ora eseguirò una moltiplicazione: 21

45 Costruire pagine JSP L oggetto out è uno degli oggetti predefiniti nelle pagine JSP, collegato al flusso di output che verrà inviato ai browser. E possibile inserire dati nel flusso di output in 2 modi: Uso diretto di out.xxx() in uno scriptlet Java. Uso delle espressioni JSP.

46 Costruire pagine JSP page language="java"%> <% int risultato; molto codice Java %> <HTML> <BODY> <H1>Hello World!</H1> Ora eseguirò una complessa operazione: ALTRO CODICE HTML Il risultato dopo tutte le operazioni effettuate è <%=risultato%> </BODY> </HTML>

47 Costruire pagine JSP Perché usare le espressioni JSP piuttosto che gli scriptlet? Nessun motivo se non pulizia del codice. E buona norma raggruppare il più possibile il codice Java al di fuori del contesto HTML, e le espressioni aiutano in questo. Le espressioni si inseriscono meglio nelle parti HTML, piuttosto che aprire e chiudere uno scriptlet.

48 Componenti di una JSP Gli scriptlet <% // codice Java %> Le espressioni <%=espressione Java%> Le direttive parametro1=valore1 parametro2=valore2 %> Le dichiarazioni <%! Dichiarazione %>

49 Dichiarazioni JSP <%! int fattoriale(int a) { if (a==0) return 1; if (a>2) return a*fattoriale(a-1); return a; } %>

50 Direttive JSP La direttiva page è già stata vista. E' molto utile anche la direttiva include che permette di richiamare in un punto qualsiasi della pagina un'altra pagina JSP. include file="urlpagina" %> Questo evita la replicazione di codice e permette l'inclusione di pagine contenenti librerie di funzioni ottenute con le dichiarazioni, o la ripetizioni di blocchi di codice (anche statico) tra pagine diverse.

51 Mischiare HTML e Java L application server si occupa di trasformare tutto il contenuto di una pagina JSP (parti HTML e Java) in codice Java. <BODY> <TABLE> <TR> out.println( <BODY>\n + <TABLE>\n + <TR>\n + );

52 Mischiare HTML e Java Esempio. <% %> <% %> if (parametro==1) { <H3>Tabella del parametro 1</H3> <TABLE> </TABLE> } else if (parametro==2) { <H3>Tabella del parametro 1</H3> <TABLE> </TABLE> if (parametro==1) { out.println( <H3>Tabella del parametro 1</H3>\n + <TABLE>\n + + </TABLE>\n ); } else if (parametro==2) { out.println( <H3>Tabella del parametro 1</H3>\n + <TABLE>\n + + </TABLE>\n );

53 Alcuni oggetti Predefiniti Oggetti disponibili ad ogni pagina JSP. Oggetto out. Oggetto request. E collegato alla richiesta eseguita dal client. Possiede metodi per estrarre ulteriori informazioni quali i cookie, i parametri passati. E possibile ottenere i cookie impostati nel client tramite il metodo Cookie[] getcookies(); Cookie è un altro oggetto standard del linguaggio Java. Ha un metodo per ottenere il nome del cookie (getname) e il valore associato (getvalue). Request è molto utilizzato per ottenere informazioni sulle scelte del client. String getparameter(string parametername);

54 Alcuni oggetti Predefiniti Il metodo permette di ottenere i parametri passati dal client all invio della pagina (o tramite parametri appesi all URL, o via campi in un form HTML). Esempio? page language="java"%> <!-- File form.jsp --> <HTML> <BODY> <FORM NAME= myform ACTION= form.jsp > <INPUT TYPE= text NAME= nome VALUE= <%=request.getparameter( nome )%> ><BR> <INPUT TYPE= text NAME= cognome VALUE= <%=request.getparameter( cognome )%> ><BR> <INPUT TYPE= submit VALUE= Salva > </FORM> </BODY> <HTML>

55 Breve parentesi sui cookie I cookie sono piccoli file di testo, limitati in numero e dimensione. Possono essere associati ad un url Web (e.g: oppure ad un percorso interno a questi (e.g: Possono avere una scadenza (dopo la quale vengono cancellati) o durare indefinitivamente. Vengono utilizzati per memorizzare nel client informazioni sull'utente ma la loro locazione li rende un posto non sicuro per memorizzare i dati (nessun dato sensibile come password in chiaro dell'utente) ma un ottimo posto per informazioni di minore importanza (preferenze varie dell'applicazione). I cookie vengono inviati al server (o al percorso interno del server) ad ogni richiesta HTTP effettuata, senza che l'utente debba fare nulla di più. I cookie permettono quindi di ricordare al server alcune scelte del client, sebbene HTTP sia un protocollo stateless.

56 Alcuni oggetti Predefiniti Oggetto response. E collegato alla risposta che verrà inviata al client e permette di gestire l invio di nuovi cookie. void addcookie(cookie cookie); L oggetto response gestisce anche le redirezioni (redirect), ossia può forzare il caricamento di un altra pagina web. void sendredirect(string location); Quando viene utilizzata un azione di redirect?

57 Alcuni oggetti Predefiniti <!-- File form.html --> <HTML> <HEAD><TITLE>Form di inserimento nel database</title> </HEAD> <BODY> <FORM NAME= myform ACTION= insertdb.jsp > <INPUT TYPE= text NAME= nome ><BR> <INPUT TYPE= text NAME= cognome ><BR> <INPUT TYPE= password NAME= pwd ><BR> <INPUT TYPE= submit VALUE= Invia dati > </FORM> </BODY> <HTML> page language="java"%> <% // file InserDB.jsp Codice per inserimento dei dati nel database if (hainserito) // esecuzione corretta, ripeto da capo response.sendredirect( form.html ); else // ho avuto problemi, pagina d errore response.sendredirect( errore.html ); %>

58 Alcuni oggetti Predefiniti Oggetto session. E una struttura dati memorizzata sul server. Ne viene costruita una per ogni client esistente. E il posto migliore per memorizzare in modo sicuro alcune informazioni del client che non è conveniente inserire nei cookie. Si usano fondamentalmente 2 metodi: Object getattribute(string name); Ottiene un oggetto qualsiasi dalla sessione, o null se non vi era inserito. void setattribute(string name, Object value); Salva nella sessione l oggetto passato. Come avviene l'associazione tra la sessione lato server e il client (ricordando che HTTP è un protocollo stateless?). Con un cookie! JSESSIONID=4779FF6307AF6216ACA84F2E2BCA2461

59 Alcuni oggetti Predefiniti page language="java"%> <% // CODICE DA INSERIRE IN OGNI PAGINA CHE RICHIEDE AUTENTICAZIONE String aut = (String)session.getValue( autenticato ); if (aut==null!aut.equals( true )) // no! response.sendredirect( login.html ); return; %> page language="java"%> <%! boolean controllo(string id, String pass) { // Codice necessario a controllare l autenticazione } %> <% // CODICE CHE CONTROLLA L AUTENTICAZIONE String userid = request.getparameter( userid ); String pwd = request.getparameter( password ); boolean autenticato=controllo(userid, pwd); if (autenticato) // può accedere al portale session.setvalue( autenticato, true ); else // errore nei dati inseriti, riprova response.sendredirect( login.html ); %>

60 Alcuni oggetti Predefiniti Oggetto application. E una struttura dati memorizzata sul server, molto simile all'oggetto session. La differenza è però sostanziale in quanto è una struttura unica per ogni applicatione esistente sull'application server. E una struttura dati utile per memorizzare informazioni collegate ad ogni client (numero di accessi, risorseo comuni...) e come session è sicura.

61 Riguardo al debug Tutto il flusso di output dell esecuzione di una pagina JSP viene inserito in un contensto HTML, il che rende a volte difficoltoso trovare gli errori tramite stampe di informazioni di debug. E sempre possibile eseguire codice Java che scriva del testo senza ricorrere all oggetto out. Java solitamente scrive a schermo con istruzioni che assumono questa forma: System.out.println( debug ); Durante l esecuzione di pagine JSP, dove viene inserito questo testo, mancando un output video? Nel file catalina.out.

62 Java e Connessioni JDBC Un intero package (libreria) Java si occupa delle comunicazioni con i database. L importazione dei package nelle pagine JSP avviene all interno della direttiva page: page language= java import="java.sql.*" %> Ogni database che supporti Java, offre un driver Odbc che permette al linguaggio di interfacciarsi con il database. Il supporto alla connesione al database ci è dato direttamente dall'uso di un connection pool in Tomcat.

63 Java e Connessioni JDBC L instanza di Connection che apre la connessione al database può essere ottenuto solo dopo aver caricato il driver opportuno (lavoro svolto per noi da Tomcat, in modo trasparente). Per ottenere un oggetto Connection da Tomcat, eseguiremo una serie di istruzione in ogni pagina JSP che necessiti della connessione. page language="java" import="java.sql.*, javax.sql.*, javax.naming.*"%> <% Connection connection; Context initcontext = new InitialContext(); Context envcontext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/ConnTmxy"); connection = ds.getconnection(); %>

64 Java e Connessioni JDBC L oggetto Statement è uno degli oggetti ricavabili da Connection e si occupa delle query semplici : Statement statement = connection.createstatement(); Permette di eseguire delle operazioni SQL sul database. Queste sono principalmente suddivise in due tipi di query: Le query che non ritornano risultati (e.g: INSERT, DELETE, UPDATE) e quelle che invece ritornano set di righe come risultati (e.g: SELECT). Query del primo tipo: statement.executeupdate( UPDATE user SET nome = Pippo );

65 Java e Connessioni JDBC Query del secondo tipo: ResultSet rs = statement.executequery( SELECT nome FROM user ORDER BY nome ); Gli oggetti ResultSet rappresentano l insieme di n (0 o più) righe ottenute in risposta ad una SELECT SQL. I risultati vengono analizzati una riga alla volta ed esiste quindi il metodo per passare alla riga successiva: rs.next(); Questo metodo ritorna un booleano che sarà true se vi sono ancora risultati da leggere, false altrimenti. Una volta posizionati sopra ad una riga, si possono leggere i dati

66 Java e Connessioni JDBC String name = rs.getstring( nome ); int id = rs.getint( id ); boolean iscritto = rs.getboolean( iscritto ); Questi sono alcuni esempi di come possono essere estratte le informazioni nelle colonne dal ResultSet. Una campo può essere letto infinite volte, prima del lancio del prossimo metodo next. Il metodo next da lanciato almeno una volta (posizione iniziale è beforefirst).

67 Java e Connessioni JDBC page language="java import= java.sql.* %> HTML <%... // instanzio la connessione // Colonna da estrarre String colonna = request.getparameter( colonna ); Statement st = conn.createstatement(); ResultSet rs = st.executequery( SELECT +colonna+ FROM user ); out.println( <H1>Leggo dalla colonna +colonna+ :</H1> ); while (rs.next()) out.println(rs.getstring(colonna)+ <BR> ); conn.close(); %>

68 Statement e PreparedStatement Sono entrambi estratti da un'istanza di Connection. Statement è più semplice ed è perfetto per un utilizzo semplice del database (inserimento di dati di facile gestione come stringhe e numeri). Necessita di scrivere correttamente la query SQL in base al tipo dei dati inseriti (mascherare le stringhe!) e non è possibile gestire dati binari. Nel caso si debba lavorare con dati binari (il sorgente di un'immagine salvata nel database? Un file PDF?), è necessario l'uso di PreparedStatement.

69 PreparedStatement String SQL = INSERT INTO mytable VALUES(?,?,?) ; PreparedStatement ps = connection.preparestatement(sql); ps.setint(1,33); ps.setstring(2, Bla bla bla... ); ps.setstring(3, ); ps.execute() A seconda del metodo setxx usato, possiamo disinteressarci della gestione dei dati. Non dobbiamo controllare le stringhe, non dobbiamo pregestire gli stream binari...

70 Lavorare con dati binari Come devo gestire l'invio di un form con dati binari? <form action= salva.jsp enctype="multipart/form data"> <input type= text name= titolo > <input type= file name= sorgente_pdf > </form> Se voglio inviare dati binari devo impostare la corretta codifica per il form. Il problema sta tutto nella gestione dei dati una volta che l'invio è stato eseguito... tutti i dati arrivano nel nuovo formato e non sono più gestibili con dei semplici request.getparameter.

71 Lavorare con dati binari Viene fornito un package Java di supporto (upload). page language="java" import="java.sql.*, java.io.bytearrayinputstream" %> include file="binarydata.jsp" %> <%... String nome = getparam("nome"); byte allegatopdf[] = getbytes("allegato"); ps.setstring(1,nome); bytearray = new ByteArrayInputStream(allegatoPDF); ps.setbinarystream(2,bytearray,allegatopdf.length); ps.execute(); %>

72 Riferimenti Tomcat 5 Documentazione: MySql Documentazione: Java2SE Documentazione (standard Java): Java2EE 1.4 Documentazione (JSP & Servlet): Eclipse Ambiente di sviluppo: Lomboz Plugin JSP per Eclipse:

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Un client su arduino invia i dati acquisiti ad un database

Un client su arduino invia i dati acquisiti ad un database Un client su arduino invia i dati acquisiti ad un database PROBLEMA Si vogliono inviare, periodicamente, i dati acquisiti da alcuni sensori ad un database presente su di un server. Arduino con shield Ethernet

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

PHP: form, cookies, sessioni e. Pasqualetti Veronica

PHP: form, cookies, sessioni e. Pasqualetti Veronica PHP: form, cookies, sessioni e mysql Pasqualetti Veronica Form HTML: sintassi dei form 2 Un form HTML è una finestra contenente vari elementi di controllo che consentono al visitatore di inserire informazioni.

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Lezione III: Oggetti ASP e interazione tramite form HTML

Lezione III: Oggetti ASP e interazione tramite form HTML Lezione III: Oggetti ASP e interazione tramite form HTML La terza lezione, come le precedenti, ha avuto una durata di due ore, di cui una in aula e l altra in laboratorio, si è tenuta alla presenza della

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

PRESENTAZIONE DI UN SMS AL GATEWAY

PRESENTAZIONE DI UN SMS AL GATEWAY Interfaccia Full Ascii Con questa interfaccia è possibile inviare i dati al Server utilizzando solo caratteri Ascii rappresentabili e solo i valori che cambiano tra un sms e l altro, mantenendo la connessione

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

Protocollo HTTP. Alessandro Sorato

Protocollo HTTP. Alessandro Sorato Un protocollo è un insieme di regole che permettono di trovare uno standard di comunicazione tra diversi computer attraverso la rete. Quando due o più computer comunicano tra di loro si scambiano una serie

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Integrare le MFC con Irrlicht. Sezione 1: Creazione del progetto. by Raffaele White tiger Mancuso

Integrare le MFC con Irrlicht. Sezione 1: Creazione del progetto. by Raffaele White tiger Mancuso Integrare le MFC con Irrlicht by Raffaele White tiger Mancuso In questo topic spiegherò come integrare irrlicht in un documento singolo MFC *(1). Io ho usato il visual c++ 6 ma la procedura dovrebbe essere

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale. l Editor vi Negli ambienti Unix esistono molti editor di testo diversi; tuttavia vi è l unico che siamo sicuri di trovare in qualsiasi variante di Unix. vi (visual editor) è stato scritto per essere utilizzabile

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

FileMaker Server 13. Pubblicazione Web personalizzata con PHP

FileMaker Server 13. Pubblicazione Web personalizzata con PHP FileMaker Server 13 Pubblicazione Web personalizzata con PHP 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker

Dettagli

FORM Il sistema informativo di gestione della modulistica elettronica.

FORM Il sistema informativo di gestione della modulistica elettronica. Studio FORM FORM Il sistema informativo di gestione della modulistica elettronica. We believe in what we create This is FORM power La soluzione FORM permette di realizzare qualsiasi documento in formato

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

FileMaker Server 13. Guida introduttiva

FileMaker Server 13. Guida introduttiva FileMaker Server 13 Guida introduttiva 2007-2013 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 Stati Uniti FileMaker e Bento sono marchi

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31 Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero

Dettagli

RefWorks Guida all utente Versione 4.0

RefWorks Guida all utente Versione 4.0 Accesso a RefWorks per utenti registrati RefWorks Guida all utente Versione 4.0 Dalla pagina web www.refworks.com/refworks Inserire il proprio username (indirizzo e-mail) e password NB: Agli utenti remoti

Dettagli