Quando digiti www.google.com nel tuo browser web, si apre una connessione sulla porta predefinita 80 al server di Google (tramite una ricerca DNS per vedere quale indirizzo IP è www.google.com) e richiede la pagina web. Il server di Google risponde con una pagina web che il tuo browser disegna sullo schermo (di solito effettuando ulteriori chiamate per immagini, CSS e JavaScript).
Quando vai su localhost: 8080 è esattamente la stessa cosa. Il nome del server Localhost si risolve sempre sulla macchina su cui stai eseguendo e utilizza il falso indirizzo IP di 127.0.0.1 (il tuo computer avrà due indirizzi IP: questo falso che ogni computer ha e quello reale). Quindi è necessario disporre di un'istanza Tomcat in esecuzione in ascolto locale per le connessioni sulla porta 8080.
Perché la porta 8080 anziché la porta http 80 predefinita? Bene, nel caso in cui tu abbia già un server web in atto.
In genere hai server Web e server di app.
I server Web (come Apache httpd) forniscono pagine statiche. In effetti è come un elegante server FTP unidirezionale. Si apre una connessione TCP e si richiede un file utilizzando i comandi HTTP (in genere GET). Il server web restituisce un file HTML e il tuo browser lo scarica e lo analizza, vede che ha bisogno di altre immagini e le richiede. Un server web è molto veloce ma sostanzialmente solleva i file dal disco locale e li restituisce.
Un App Server (come Tomcat o JBoss) è simile, tranne che in genere esegue il codice per "creare" la pagina richiesta, anziché sollevarla direttamente dal disco. Quello che fa per creare quella pagina dipende dalla tua applicazione. Potrebbe connettersi a un database, eseguire un programma, servire in modo casuale una pagina ... Ecc. Quando accedi al tuo banking online, ad esempio, il server delle app imposta una sessione per te, restituisce quell'ID sessione in un cookie che il tuo il browser reinvia ogni volta che si effettua una richiesta fino a quando non si effettua il logout. Quindi, se chiedi la pagina "i miei saldi", la banca cerca chi sei in base al tuo ID di sessione, quindi va al suo database per ottenere il tuo nome e il saldo della banca, quindi crea una pagina che dice "Ciao John Smith, il tuo saldo è di € 100 ". I server delle app sono in genere più lenti, ma più versatili dei server Web.
Molte posizioni hanno un WebServer in esecuzione nella porta predefinita di 80 e quindi AppServer in esecuzione su una porta secondaria (come 8080). Quindi le pagine statiche vengono servite rapidamente e quando gli utenti fanno clic su un collegamento che le porta a una pagina dinamica, il collegamento passa a 8080 (a cui risponde il server delle app) o viene impostato il server Web per inoltrare determinate richieste al server delle app (in in questo caso sembra ancora la porta 80 predefinita e quindi un po 'più bella per l'utente).
Naturalmente questa è una panoramica di altissimo livello e nulla è così bianco e nero. La maggior parte dei server web può creare alcuni contenuti dinamici eseguendo script (in genere CGI tramite script di lei usando perl o PHP) e la maggior parte dei server di app può anche servire file semplici come un server web. In effetti è possibile eseguire solo un server app e modificare il numero di porta Tomcat da 8080 a 80.
Infine, molte applicazioni si stanno allontanando dal servire pagine HTML complete per ogni richiesta al server delle app (considerato lento e inefficiente) e stanno invece rispondendo con i soli frammenti di dati utilizzando AJAX per inviare JSON o XML. Torna al www.google.com originale che hai usato per digitare la query di ricerca, premere Cerca e ottenere una pagina dei risultati. Ora invece, mentre digiti, il tuo browser invia continuamente richieste AJAX a Google che risponde con risultati di ricerca aggiornati in base a ciò che hai digitato finora e quindi il tuo browser aggiorna la pagina. Ciò significa che non è necessario attendere che l'utente invii la pagina in modo più rapido e dinamico per l'utente (come sarebbe un'app desktop di vecchia scuola).