Когда вы вводите www.google.com в свой веб-браузер, он открывает соединение через порт 80 по умолчанию с сервером Google (через поиск в DNS, чтобы узнать, какой IP-адрес www.google.com) и запрашивает веб-страницу. Сервер Google отвечает веб-страницей, которую ваш браузер рисует на экране (обычно путем дальнейших вызовов изображений, CSS и JavaScript).
Когда вы переходите на localhost: 8080, это то же самое. Имя сервера Localhost всегда соответствует компьютеру, на котором вы работаете, и использует поддельный IP-адрес 127.0.0.1 (у вашего компьютера будет два IP-адреса - этот поддельный, который есть у каждого компьютера, и настоящий). Поэтому у вас должен быть экземпляр Tomcat, работающий локально и прослушивающий соединения через порт 8080.
Почему порт 8080, а не порт http по умолчанию 80? Это на тот случай, если у вас уже есть веб-сервер.
Обычно у вас есть веб-серверы и серверы приложений.
Веб-серверы (например, Apache httpd) обслуживают статические страницы. По сути это похоже на модный односторонний FTP-сервер. Вы открываете TCP-соединение и запрашиваете файл, используя команды HTTP (обычно GET). Веб-сервер возвращает файл HTML, и ваш браузер загружает и анализирует его, видит, что ему нужны другие изображения, и запрашивает их. Веб-сервер очень быстрый, но в основном снимает файлы с локального диска и возвращает их.
Сервер приложений (например, Tomcat или JBoss) похож, за исключением того, что он обычно запускает код для «создания» запрашиваемой страницы, а не поднимает ее прямо с диска. Что он делает для создания этой страницы, зависит от вашего приложения. Он может подключаться к базе данных, запускать программу, произвольно обслуживать страницу ... И т. Д. Когда вы входите, например, в свой онлайн-банк, сервер приложений устанавливает для вас сеанс, возвращает идентификатор этого сеанса в файле cookie, который ваш браузер отправляет обратно каждый раз, когда вы делаете запрос, пока вы не выйдете из системы. Поэтому, если вы запрашиваете страницу «Мои остатки», тогда банк ищет, кто вы, на основе вашего идентификатора сеанса, затем идет в свою базу данных, чтобы узнать ваше имя и остаток на счете, а затем создает страницу с надписью «Привет, Джон Смит, ваш баланс это 100 евро. " Серверы приложений обычно медленнее, но более универсальны, чем веб-серверы.
Во многих местах WebServer работает с портом по умолчанию 80, а затем AppServer работает на вторичном порту (например, 8080). Таким образом, статические страницы обслуживаются быстро, и когда пользователи нажимают на ссылку, которая переводит их на динамическую страницу, ссылка либо переходит на 8080 (на который отвечает сервер приложений), либо веб-сервер настраивается для пересылки определенных запросов на сервер приложений (в в этом случае он все еще выглядит как порт 80 по умолчанию и поэтому выглядит немного приятнее для пользователя).
Конечно, это обзор очень высокого уровня, и ничто не является черно-белым. Большинство веб-серверов могут создавать динамический контент, выполняя сценарии (обычно CGI, используя сценарии, использующие Perl или PHP), и большинство серверов приложений также могут обслуживать простые файлы, такие как веб-сервер. Фактически можно просто запустить сервер приложений и изменить номер порта tomcat с 8080 на 80.
Наконец, многие приложения уходят от предоставления полных HTML-страниц для каждого запроса на сервер приложений (который рассматривается как медленный и неэффективный) и вместо этого отвечают только фрагментами данных, используя AJAX для отправки JSON или XML. Вернитесь на исходный сайт www.google.com, который вы использовали для ввода поискового запроса, нажмите «Поиск» и получите страницу с результатами. Теперь вместо этого, когда вы печатаете, ваш браузер постоянно отправляет запросы AJAX в Google, который отвечает обновленными результатами поиска, основанными на том, что вы уже набрали, а затем ваш браузер обновляет страницу. Это означает, что нет необходимости ждать, пока пользователь отправит страницу так быстро и более динамично для пользователя (как в случае со старым настольным приложением).