sabato 10 aprile 2010

CLASSE SERVLET

import javax.Servlet;
import javax.Servlet.http;

class MiaServlet extends HttpServlet{

//METODO doGet UNICO CHE DEVE ESSERE ESTESO, MENTRE INIT() E DESTROY() POSSO UTILIZZARLI GIà COSì

void doGet (HttpServletResponse risp, HttpServletRequest richiesta)
throws ServletException,IOException{


risp.setContentType("Text/html"); //CONSULTO LA CLASSIFICAZIONE MIME PER TROVARE CIò CHE DEVO INSERIRE COME PARAMETRO DEL METODO. IDENTIFICO IL TIPO DI TIPO DI DATO TRASMESSO DAL WEBSERVER AL BROWSER

PrintWriter out = risp.getWriter();

String s = "...";// AL POSTO DEI PUNTINI DI SOSPENSIONE ANDRA' INSERITO IL CODICE HTML NECESSARIO IN BASE A QUELLO CHE SI VUOLE VISUALIZZARE

try{ out.print(s);}
catch (Exception e ){ e.print.StrachTrace();}
}

mercoledì 7 aprile 2010

HTML:... altri tag

//dentro il tag html - body

  • INSERIRE UN COLLEGAMENTO IPERTESTUALE
  1. apro il tag : <
  2. scrivo : a href =
  3. inserisco tra virgolette l'url del sito
  4. chiudo il tag: >
  5. inserisco una nota esempio "clicca qui per collegarti a ..."
  6. apro il tag di chiusura <
  7. inserisco il tag di chiusura : /a
  8. chiudo il tag di chiusura: >

INSERIRE UN'IMMAGINE

  1. apro il tag : <
  2. scrivo : img src ="
  3. tra virgolette inserisco l'url del sito che contiene l'immagine
  4. inserisco i valori a: height = "200"
  5. width = "200"
  6. alt = "nome"
  7. chiudo il tag : >
  • INSERIRE UNA TABELLA

//TABELLA tag table e /table (entrambi i tag sono compresi tra <>).

//RIGA ( table row ) tr e /tr (entrambi i tag sono compresi tra <>).

//DATO (table data) td e /td (entrambi i tag sono compresi tra <>).




TAG : HEAD E BODY

HTML

L'HyperText Markup Language (HTML) è un linguaggio usato per le pagine del World Wide Web .
Tutti i siti web sono scritti in HTML, codice che viene letto ed elaborato dal browser, il quale genera la pagina che viene visualizzata sullo schermo del computer.

L'HTML non è un linguaggio di programmazione, ma descrive il contenuto, testuale e non, di una pagina web.


Ogni elemento è racchiuso all'interno di marcature dette tag.
Una sezione di testo o di codice deve essere delimitaa fra un tag di apertura ed uno di chiusura (chiusura esplicita), che coincide col tag di apertura preceduto da una barra (/).

il documento HTML presenta una struttura ad albero annidato, composta da sezioni delimitate da tag opportuni che al loro interno contengono a loro volta sottosezioni più piccole, sempre delimitate da tag.

La struttura più esterna è html e /html (entrambi i tag sono compresi tra <>).
All'interno dei tag lo standard prevede sempre in sequenza ordinata:

1)la sezione di intestazione o header, delimitata tra i tag head e /head(entrambi i tag sono compresi tra <>).
2)la sezione del corpo o body, delimitata tra i tag body e /body (entrambi i tag sono compresi tra <>). , che contiene la parte informativa vera e propria, ossia il testo, le immagini e i collegamenti che costituiscono la parte visualizzata dal browser.

web

Il World Wide Web, in sigla WWW, più spesso abbreviato in Web, è un servizio di Internet consistente in un insieme vastissimo di contenuti multimediali e di servizi accessibili a tutti.

I suoi servizi possono essere resi disponibili dagli stessi utenti di Internet con una spesa estremamente esigua e di raggiungere un pubblico potenzialmente vastissimo distribuito in tutto il mondo.

La nascita del Web risale al 6 agosto 1991, giorno in cui Berners-Lee mise on-line su Internet il primo sito Web.
Con il successo del Web ha inizio la crescita esponenziale e inarrestabile di Internet ancora oggi in atto, nonché la cosiddetta "era del Web".

I contenuti del Web sono organizzati nei cosiddetti siti web a loro volta strutturati nelle cosiddette pagine web le quali si presentano come composizioni di testo e/o grafica visualizzate sullo schermo del computer dal browser web.
Le pagine web, anche appartenenti a siti diversi, sono collegate fra loro in modo non sequenziale attraverso i cosiddetti link (anche chiamati collegamenti), parti di testo e/o grafica di una pagina web che permettono di accedere ad un'altra pagina web, di scaricare particolari contenuti, o di accedere a particolari funzionalità, cliccandoci sopra con il mouse, creando così un ipertesto.

Tutti i siti web sono identificati dall' URL che ne permette la rintracciabilità nel Web.

Il Web è implementato :
HTML (e suoi derivati): il linguaggio con cui sono scritte le pagine web;
HTTP: il protocollo di rete appartenente al livello di applicazione del modello ISO/OSI (vedi http://it.wikipedia.org/wiki/Modello_ISO/OSI) su cui è basato il Web;
URL: lo schema di identificazione, e quindi di rintracciabilità, dei contenuti e dei servizi del Web.

INTERNET

INTERNET = rete di reti.
L'infrastruttura di Internet si è espansa progressivamente in tutto il mondo per creare la rete mondiale globale di computer oggi conosciuta. Oggi rappresenta il principale mezzo di comunicazione di massa accessibile da chiunque disponga di un computer dotato dei software necessari, appoggiandosi a un Internet service provider che gli fornisce l'accesso attraverso una linea di telecomunicazione dedicata o una linea telfonica.
Internet offre i più svariati servizi, i principali dei quali sono il World Wide Web e la posta elettronica e molti altri, i suoi utenti, in costante crescita, nel 2008 hanno raggiunto quota 1,5 miliardi e, visto l'attuale ritmo di crescita, si prevede che saliranno a 2,2 miliardi nel 2013

I nodi che si collegano a Internet sono TERMINALI DISOMOGENEI.
PARTECIPARE A INTERNET significa ricevere e trasmettere dati.

Questo è stato possibile creando uno standard tra i protocolli di comunicazione tra le varie reti, consentendo ai più diversi enti e agenti di scambiare dati mediante un protocollo comune, il TCP/IP, indipendentemente dalla struttura dell'hardware e del software dei diversi terminali.

Il “protocollo di comunicazione”, che descrive ad esempio tutte le regole di trasmissione dei dati in rete, si basa infatti su specifiche tecniche molto dettagliate. Ciò che viaggia in Internet, infatti, sono i pacchetti, che costituiscono l'unità minima in questo sistema di comunicazione. Tali pacchetti viaggiano usando una tecnica conosciuta come commutazione di pacchetto che consente di condividere un cammino piuttosto che fare uso di percorso dedicato. In pratica un pacchetto che parte da un host e giunge ad un altro host non segue un percorso predefinito, ma quello più congeniale in un preciso momento.

Come si comprende, la struttura di Internet non è uniforme ma la "ragnatela" è composta da un'ossatura molto veloce e potente a cui si connettono sottoreti a volte più deboli e lente.
Queste sottoreti possono anche essere protette e, quindi, consentono l'accesso a Internet (e viceversa) solo in maniera condizionata. Si tratta delle Intranet e la protezione è un firewall(muro tagliafuoco in inglese).

CLASSIFICAZIONI

COLLEGAMENTO:
  • SIMPLEX
  • HALF-DUPLEX
  • FULL-DUPLEX

COMUNICAZIONE:

  • PARALLELA
  • SERIALE

TRASMISSIONE:

  • ANALOGICA
  • DIGITALE

CONNESSIONE:

  • RETE AD ANELLO
  • RETE A STELLA
  • RETE A BUS
  • RETE A MAGLIA

LINEE DI COLLEGAMENTO:

  • DEDICATE
  • COMMUTATE------1) A CIRCUITO------2) A PACCHETTO

martedì 23 febbraio 2010

venerdì 12 febbraio 2010

DROP

ALTER TABLE:
  • ADD aggiunge una colonna, una chiave primaria,...
  • DROP toglie

DROP COSA PUò TOGLIERE?

  • una colonna

es ALTER TABLE impiegati

DROP Residenza; (toglie l'attributo residenza alla tabella impiegati)

  • una tabella

es DROP TABLE impiegati; (l a tabella impiegati è stata eliminata)

GRANT

E' possibile amministrare un dbms concedendo vari privilegi a diversi utenti specificando:
l'utente o gli utenti
le tabelle suelle quali è consentito l'accesso
e il tipo di accesso


SINTASSI:

GRANT azione
ON tabella
TO utente

SINTASSI PER SPECIFICARE LE TEBELLE:
nomeDatabase.nomeTabella

SINTASSI PER SPECIFICARE UN UTENTE:
nomeUtente@nomeServer
es Luca@localhost

LE AZIONI POSSIBILI:
-SELECT ritrovare dati nella tabella
-INSERT inserire nuove righe
-UPDATE modificare le righe
-DELETE cancellare righe
-ALTER aggiungere o eliminare colonno o modificare il tipo di dati
-CREATE creare una nuova tabella
-DROP


i permessi e i diritti di accedere possono diventare più restrittivi
ponendo tra parentesi tonde e separati tra virgole i nomi delle colonne che l'utente può vedere
o modificare

GRANT UPDATE (Residenza)
ON impiegati
TO maurizio@localhost;

REVOKE: revoca i permessi annullando i diritti di accesso
la sintassi è simile a quella di GRANT

REVOKE azione
ON tabella
TO utente

ALTER TABLE

ALTER TABLE nomeTabella
+
Diverse possibilitò:

  • ADD COLUMN nomeColonna TipoDato
  • ADD FOREIGN KEY(nomeChiaveEsterna) REFERENCES nomeTabella(chiavPrimaria)
  • ADD PRIMARY KEY(nome)

es

.....

// Adding a new column to an existing table

Statement sta = con.createStatement();

int count = sta.executeUpdate( "ALTER TABLE Herong.Price ADD Discount REAL"); System.out.println("A new column added.");

sta.close();

OPERATORI D'AGGREGAZIONE

  • avg (nomeCampo) permette di ottenere la media dei valori presenti campo indicato
  • max(nomeCampo) permette di ottenere il valore massimo
  • min(nomeCampo) permette di ottenre il valore minimo
  • count(nomeCampo) conta le righe presenti nell campo indicato
  • sum(nomeCampo) permette di ottenere la somma dei valori presenti nel campo indicato

es

SELECT count(*) AS [numeroFunghi], funghi.tipo

FROM funghi

GROUP BY funghi.tipo;

IMPORTANTE!!...

Per default l'oggetto di ResultSet non è aggiornabile e ha un cursore che si muove solamente in avanti, ma
SE PONGO in createStatment i PARAMETRI:

ResultSet.TYPE_SCROLL_INSENSITIVE
ResultSet.CONCUR_UPDATABLE

rendo rs scorrevole e aggiornabile.
Per esempio in questo modo mi sarà possibile utilizzare non solo next() e last() ma anche previous(), first(),..

COMBINAZIONI TRA TABELLE

PRODOTTO CARTESIANO ha come risultato una tabella nuova i cui record costituiscono tutte le combinazione, anche false, delle due tabelle di partenza.
il numero di record sarà uguale al prodotto dei record delle due tabelle.

COMBINAZIONI TRA TABELLE:
  1. condizion INNER JOIN
  2. pongo nel where la condizione chiavePrimaria= chiaveEsterna

creazione di una tabella

TIPI DI VALORE:


  • VARCHAR (INT Ncaratteri) per le stringe di caratteri

  • REAL per i numeri con la virgola

  • DATA per le date

  • INTEGER per i numeri interi


CREATE TABLE nomeTabella( nome1 tipoDato,


nome2 tipoDato


PRIMARY KEY(nomeChiavePrimaria));


es:


CREATE TABLE persone( nome VARCHAR(16),


cognome VARCHAR(16),


cf VARCHAR(16),


PRIMARY KEY(cf));


PER AGGIUNGERE UNA CHIAVE ESTERNA


FOREIGN KEY (nomeChiaveEsterna) REFERENCES nomeTabellaConChiavePrimaria(nomeChiavePrimaria);

VINCOLI CHE SI POSSONO AGGIUNGERE:

  • NOT NULL obbliga a mettere un valore
  • UNIQUE obbliga a mettere valori tutti diversi
  • DEFAULT '0' pone 0 come valore predefinito

classificazione

SQL :
  • DDL DATA DEFINITION LANGUAGE (create, drop,alter...)
  • DML DATA MANIPULATION LANGUAGE(insert, update, delete,...)
  • SQL STRUCTURED QUERI LANGUAGE (select,...)

lunedì 25 gennaio 2010

inserimento di una riga in una tabella

l'INSERIMENTO DI UNA RIGA IN UNa tabella può avvenire in due modi

  1. ESEGUENDO UN'ISTRUZIONE SQL DI INSERT INTO

es: INSERT INTO studenti(nome, cognome) VALUES ('Giovanni', 'Verdi')

2UTILIZZANDO IL METODO insertRow() di ResultSet

executeUpdate()

esegue un'istruzione di SQL di modifica dati (INSERT, UPDATE, DELETE) restituendo il numero dei record coinvolti

esempi di utilizzo del metodo executeUpdate()

INSERIMENTO
st.executeUpdate("INSERT INTO persone(nome, cognome)
VALUES ('giovanni', 'verdi')");

MODIFICA
st.executeUpdate( "UPDATE persone
SET nome = 'giuseppe'
WHERE cognome = 'Verdi' ");

CANCELLAZIONE
st.executeUpdate( "DELETE FROM persono
WHERE cognome = 'Verdi' ");

gestione dei risultati

come abbaimo detto i risultati restituiti dalla executeQuery sono memorizzati nel ResultSet

è possibile con un ciclo while scorrere tutto il ResultSet per ottenere i valori restituiti

while(rs.next()){
System.out.printl("il nome è " + rs.getString("nome"))
}
in questo modo stamperò tutti i valori della colonna nome

executeQuery(...)

importante specificare che il linguaggio sql può essere implementato in modo differente dalle software house .

ResultSet rs = st.executeQuery(String SQL)
1 IL RISULTATO è "PASSATO" AD UN OGGETTO DI CLASSE ResultSet
2 executeQuery VIENE INVOCATO SU UN OGGETTO DI CLASSE Statement
3 PRENDE UNA STRINGA COME PARAMETRO. TALE STRINGA è UN'ISTRUZIONE SQL

VIENE UTILIZZATO PER INTERROGARE IL DATABASE

SELECT colonna1, colonna2,...
FROM nomeTabella
WHERE condizioni di ricerca

se pongo SELECT * seleziono tutte le colonne associate alla tabella

si possono usare per determinare le condizioni di ricerca anche operatori aritmetici, di confronto, logici,...


caratteri jolly: * e ?

singoli passaggi

  1. Caricare il driver
Class.forName("sun:jdbc:odbc:JdbcOdbcDriver");
La stringa "sun:jdbc:odbc:JdbcOdbcDriver" identifica il driver JDBC-ODBC

Puo dare un'eccezione quindi porta in un try{ Class.for.....} e poi scrivere catch( ClassNotFoundException e){}

2. CREARE UNA CONNESSIONE

Connection con = DriverManager.getConnection("jdbc:odbc:nomeDSN")

odbc indica il driver da utilizzare, mentre nomeDSN il nome dell'origine dati

può dare un'eccezione quindi deve essere gestita in un blocco try-catch di tipo SQLException

3 OPERAZIONI SUL DATABASE

per esegurire operazioni sul database occorre un oggetto di classe Statement.

Statement st = con.createStatement();

può dare un'eccezione quindi deve essere gestita in un blocco try-catch di tipo SQLException

Statement offre due metodi:

executeQuery(String SQL) PER INTERROGARE IL DATABASE

il risultato viene passato ad un oggetto di classe ResultSet

executeUpdate(String SQL) PER L'INSERIMENTO, LA MODIFICA O LA CANCELLAZIONE DI DATi

4 CHIUSURA DEGLI OGGETTI

rs.close(); st.close(); con.close();

SQLException ----> usare try cath

Accesso a Database

I driver per database sono programmi che permettono di accedere a un database in modo standard, senza dover scrivere istruzioni specifiche per ogni diverso tipo di database.

un'applicazione Java può accedere a un database attraverso un driver JDBC.
JDBC mette a disposizione degli oggetti per accedere al database, presenti nel package java.sql :
Connection, Statement, ResultSet,...

uno dei driver più utilizzati sui sistemi Windows è il driver JDBC-ODBC. Richiede:
1. l'installazione del driver ODBC
2. la configurazione di una DSN

Una DSN identifica il database indicando dove si trova il database e quale driver ODBC si vuole utilizzare per accedervi


RIASSUMENDO: QUALI SONO I PASSE PER ACCEDERE AD UN DATABASE?
  1. caricare un driver specifico del database
  2. aprire una connessione con il database
  3. impostare la query
  4. eseguire la query e ottenere i risultati
  5. gestire i risultati
  6. chiudere gli oggetti aperti