# Pagina web dinamica

Una pagina web dinamica è una pagina web il cui contenuto, in tutto o in parte, è generato sul momento dal server, potendo dunque essere diversa ogni volta che viene richiamata consentendo un'interattività con l'utente, secondo il paradigma di programmazione web noto come web dinamico.
In sostanza si ricorre a dei linguaggi di programmazione (i linguaggi di scripting) che si occupano della creazione della pagina nel momento in cui questa viene visitata dal client, anche interagendo con i visitatori, e possono variare l'output HTML successivo dopo calcoli eseguiti con apposite strutture messe a disposizione dal linguaggio di scripting utilizzato.
L'utilizzo di pagine dinamiche è diventato molto velocemente una esigenza pressante nel mondo del World Wide Web: se i primi siti web creati erano, sostanzialmente, la versione elettronica di pubblicazioni scientifiche (e quindi il loro contenuto non variava nel tempo cioè era statico), quasi subito si è venuta a creare l'esigenza di collegare le proprie pagine ad archivi di dati in continua variazione o aggiornamento.
L'avvento dei linguaggi di programmazione dinamica ha dato l'impulso per uno sviluppo veloce ed economico di una moltitudine di servizi evoluti su Internet, spesso etichettati con il termine web 2.0.

## Descrizione

Una pagina Web dinamica lato server è una pagina Web la cui costruzione è controllata da un server delle applicazioni che elabora script lato server. Nello scripting lato server , i parametri determinano il modo in cui procede l'assemblaggio di ogni nuova pagina web, inclusa l'impostazione di una maggiore elaborazione lato client.
Una pagina Web dinamica lato client elabora la pagina Web utilizzando il linguaggio HTML in esecuzione nel browser durante il caricamento. JavaScript e altri linguaggi di scripting determinano il modo in cui l'HTML nella pagina ricevuta viene analizzato nel Document Object Model, o DOM, che rappresenta la pagina web caricata. Le stesse tecniche lato client possono quindi aggiornare o modificare dinamicamente il DOM nello stesso modo. Anche se una pagina web può essere dinamica sul lato client, può comunque essere ospitata su un servizio di hosting statico come GitHub Pages o Amazon S3 purché non sia incluso alcun codice lato server.
Una pagina web dinamica viene quindi ricaricata dall'utente o da un programma per computer per modificare alcuni contenuti variabili. Le informazioni di aggiornamento potrebbero provenire dal server o da modifiche apportate al DOM di quella pagina. Ciò può o non può troncare la cronologia di navigazione o creare una versione salvata a cui tornare, ma un aggiornamento dinamico di una pagina Web utilizzando le tecnologie AJAX non creerà una pagina a cui tornare, né troncherà la cronologia di navigazione Web rispetto alla pagina visualizzata. Utilizzando AJAX, l'utente finale ottiene una pagina dinamica gestita come una singola pagina nel browser Web mentre il contenuto Web effettivo reso su quella pagina può variare. Il motore AJAX risiede solo sul browser che richiede parti del proprio DOM, il DOM, per il proprio client, da un server delle applicazioni.
Lo scripting lato client, lo scripting lato server o una combinazione di questi creano un'esperienza Web dinamica in un browser.

## Alcuni esempi

Tutti i motori di ricerca, come ad esempio Google, sono costituiti interamente da pagine dinamiche. Inserendo una ricerca (ad esempio "pagine web dinamiche") verrà visualizzata una pagina generata al momento.
I blog e social network, sono interamente basati su pagine dinamiche che accedono a basi di dati in cui vengono memorizzati gli interventi attraverso l'uso di piattaforme software dette CMS.
I siti delle banche sono integralmente sviluppati in maniera dinamica in modo da poter accedere ai dati bancari degli utenti.
Qualsiasi sito di testata giornalistica o di agenzia giornalistica si basa integralmente sulla generazione dinamica della pagina.
Tutti i siti di e-commerce, basati su database per gli articoli e per le anagrafiche dei clienti, sono interamente sviluppati in maniera dinamica.

## I principali linguaggi
### CGI

Acronimo per Common Gateway Interface, si tratta di un'applicazione scritta in un qualsiasi linguaggio di programmazione, che se invocato genera un output formattato secondo le regole dell'HTML.
Con questa sigla si includono, quindi, applicazioni scritte ad hoc per risolvere uno specifico problema altrimenti di difficile soluzione se si dovessero usare i classici linguaggi di scripting.
La tendenza, comunque, è di abbandonare le applicazioni CGI per diversi motivi. Uno dei principali è che i CGI sono solitamente in forma compilata e non di sorgente e questo comporta la difficile verifica della bontà dell'applicazione stessa rendendo il server che le esegue vulnerabile ad attacchi di tipo buffer overflow.
Altro buon motivo per evitare il loro uso è il fatto che le applicazioni che si basano su CGI soffrono di una intrinseca rigidezza. Lo sviluppo di un'applicazione CGI risulta più complesso ed una volta portata a termine si tende ad adattarne l'uso piuttosto che modificarla.

### Perl

Il linguaggio Perl eredita la sintassi del C, molto funzionale con caratteristiche importanti come le espressioni regolari, che permettono la ricerca e la sostituzione di stringhe di testo descritte con caratteri speciali.

### PHP

Dal Perl, realizzando un insieme di istruzioni orientate al web nasce il PHP. Diversamente dal Perl, che obbligava a scrivere un'istruzione per ogni singola riga, anche le più banali, PHP è un linguaggio immerso nell'HTML nel senso che lo si può invocare o ignorare secondo le necessità.

### ASP

Active Server Pages è una tecnologia che include linguaggi di programmazione server side (VBscript e JScript) in grado di generare pagine web dinamiche. Tale tecnologia si è evoluta in ASP.NET.

### JSP

Le Java Server Pages rappresentano un'evoluzione del linguaggio Java. Mentre Java è pensato per sviluppare applicazioni che vengono eseguite dal computer-client del visitatore (applet java, lato client), le pagine JSP vengono eseguite dal server web (lato server) per generare un output standard (le pagine JSP vengono tradotte automaticamente da un compilatore JSP in servlet). Potrebbero essere considerate la versione moderna delle applicazioni CGI.

### Ruby

Il linguaggio Ruby, soprattutto con il framework Ruby on Rails permette di realizzare siti web dinamici con un'architettura model-view-controller.

### Python

Anche Python può essere utilizzato per la generazione dinamica di pagine web grazie a diversi framework per applicazioni web. Il collegamento con un server web avviene con WSGI.

### Cold Fusion

Il linguaggio ColdFusion è un linguaggio di scripting fortemente orientato all'accesso ai database. Molto apprezzato nello sviluppo di applicazioni enterprise, non ha goduto di grande supporto dagli sviluppatori poiché l'interprete lato server non è gratuito come per i linguaggi più diffusi.