Как написать web приложение на java
Учебник по разработке веб-приложений Java для начинающих. Начните с веб-разработки Java в Eclipse, создав примеры проектов и загрузив их для игры.
Веб-приложение Java используется для создания динамических веб-сайтов. Java обеспечивает поддержку веб-приложений через Сервлеты и JSP . Мы можем создать веб-сайт со статическими HTML-страницами, но когда мы хотим, чтобы информация была динамичной, нам нужно веб-приложение.
Веб-приложение Java
Цель этой статьи-предоставить основные сведения о различных компонентах веб-приложения и о том, как мы можем использовать сервлет и JSP для создания нашего первого веб-приложения java.
Веб-сервер и клиент
Веб-клиент-это программное обеспечение, которое помогает в общении с сервером. Некоторые из наиболее широко используемых веб-клиентов-Firefox, Google Chrome, Safari и т.д. Когда мы запрашиваем что-либо с сервера (через URL), веб-клиент создает запрос и отправляет его на сервер, а затем анализирует ответ сервера и представляет его пользователю.
Веб-сервер и веб-клиент-это два отдельных программного обеспечения, поэтому должен быть какой-то общий язык для общения. HTML является общим языком между сервером и клиентом и расшифровывается как H yper T ext M arkup L anguage.
- Код состояния – целое число, указывающее, был ли запрос успешным или нет. Некоторые из хорошо известных кодов состояния-200 для успеха, 404 для Не найдено и 403 для Доступа Запрещено.
- Тип контента – текст, html, изображение, pdf и т.д. Также известный как тип MIME
- Контент – фактические данные, которые отображаются клиентом и показываются пользователю.
Понимание URL
URL-это аббревиатура Универсального локатора ресурсов, и он используется для определения местоположения сервера и ресурса. Каждый ресурс в Интернете имеет свой собственный уникальный адрес. Давайте рассмотрим части URL-адреса на примере.
localhost – Уникальный адрес сервера, в большинстве случаев это имя хоста сервера, которое сопоставляется с уникальным IP-адресом. Иногда несколько имен хостов указывают на одни и те же IP-адреса, и виртуальный хост веб-сервера заботится об отправке запроса конкретному экземпляру сервера.
FirstServletProject/jsp/hello.jsp – Ресурс, запрошенный у сервера. Это может быть статический html, pdf, JSP, сервлеты, PHP и т.д.
Зачем нам нужен сервлет и Jsp?
Веб-серверы хороши для статического содержимого HTML-страниц, но они не знают, как создавать динамический контент или как сохранять данные в базы данных, поэтому нам нужен другой инструмент, который мы можем использовать для создания динамического контента. Существует несколько языков программирования для динамического контента, таких как PHP, Python, Ruby on Rails, Java-сервлеты и JSP.
Сервлет Java и JSP-это серверные технологии, расширяющие возможности веб-серверов за счет поддержки динамического отклика и сохранения данных.
Веб-разработка на Java
Первое веб-приложение с сервлетом и JSP
Для простоты разработки мы можем добавить настройку Tomcat с помощью Eclipse, это помогает в простом развертывании и запуске приложений.
Перейдите в настройки Eclipse и выберите Среды выполнения сервера и выберите версию вашего сервера tomcat, мой-Tomcat 7.
Укажите расположение каталога apache tomcat и информацию о JR для добавления среды выполнения.
Теперь перейдите в представление Серверы и создайте новый сервер, как показано на рисунке ниже, указывающем на добавленную выше среду выполнения.
Примечание : Если вкладка Серверы не отображается, вы можете выбрать Окно > Показать вид > Серверы, чтобы она была видна в окне Eclipse. Попробуйте остановить и запустить сервер, чтобы убедиться, что он работает нормально. Если вы уже запустили сервер с терминала, то вам придется остановить его с терминала, а затем запустить его с Eclipse, иначе он не будет работать идеально.
Теперь мы готовы с нашей настройкой создать первый сервлет и запустить его на сервере tomcat.
Выберите Файл > Создать > Динамический веб-проект и используйте изображение ниже, чтобы обеспечить время выполнения в качестве сервера, который мы добавили на последнем шаге, и версию модуля как 3.0 для создания нашего сервлета с использованием спецификаций сервлета 3.0.
Теперь выберите Файл > Создать > Сервлет и используйте изображение ниже, чтобы создать наш первый сервлет. Снова мы можем нажать кнопку Готово или проверить другие параметры с помощью кнопки далее.
Когда мы нажимаем на кнопку Готово, он генерирует наш скелетный код сервлета, поэтому нам не нужно вводить все различные методы и импорт в сервлете и экономит наше время.
Перед сервлетом 3 нам необходимо предоставить информацию о шаблоне URL-адреса в дескрипторе развертывания веб-приложения, но сервлет 3.0 использует аннотации java, которые легко понять, и вероятность ошибок меньше.
После нажатия кнопки Готово браузер откроется в Eclipse, и мы получим следующую HTML-страницу.
Вы можете обновить его, чтобы проверить, что дата динамична и продолжает меняться, вы можете открыть его за пределами Eclipse также в любом другом браузере.
Таким образом, сервлет используется для генерации HTML и отправки его в ответ, если вы посмотрите на реализацию doGet (), мы фактически создаем HTML-документ, записывая его в объект response PrintWriter, и мы добавляем динамическую информацию там, где она нам нужна.
Это хорошо для начала, но если ответ огромен с большим количеством динамических данных, он подвержен ошибкам и его трудно читать и поддерживать. Это является основной причиной введения JSP.
JSP-это также технология на стороне сервера, и она похожа на HTML с дополнительными функциями для добавления динамического контента там, где он нам нужен. JSP хороши для презентации, потому что их легко писать, потому что они похожи на HTML. Вот наша первая программа JSP, которая делает то же самое, что и вышеупомянутый сервлет.
Если мы запустим выше JSP, мы получим вывод, как показано на рисунке ниже.
Окончательная иерархия проекта выглядит так, как показано на рисунке ниже в Eclipse.
Веб-контейнер
Tomcat-это веб-контейнер, когда запрос поступает от клиента к веб-серверу, он передает запрос в веб-контейнер, и задача веб-контейнера-найти правильный ресурс для обработки запроса (сервлет или JSP), а затем использовать ответ от ресурса для генерации ответа и предоставления его веб-серверу. Затем веб-сервер отправляет ответ обратно клиенту.
Некоторые из важных работ, выполняемых веб-контейнером, заключаются в следующем:
Структура каталогов веб-приложений
Веб-приложения Java упакованы в виде веб-архива (WAR) и имеют определенную структуру. Вы можете экспортировать приведенный выше динамический веб-проект в виде файла WAR и распаковать его, чтобы проверить иерархию. Это будет что-то вроде изображения ниже.
Дескриптор развертывания
web.xml файл является дескриптором развертывания веб-приложения и содержит сопоставление для сервлетов (до версии 3.0), страниц приветствия, конфигураций безопасности, параметров тайм-аута сеанса и т.д.
Это все для руководства по запуску веб-приложений Java, мы подробнее рассмотрим сервлеты и JSP в будущих публикациях.
Опытные разработчики могут не читать дальше, так-как эта статья рассчитана скорее на новичков, но всё-же я был бы очень рад, если бы кто-нибудь оставил конструктивную критику в мой адрес или указал на ошибки.
В этой статье я бы хотел рассказать начинающим разработчикам, как можно с минимальными усилиями создать свою веб-платформу начального уровня.
Для предпринимателей или начинающих бизнесменов, или владельцев каких-либо площадок будет интересно узнать, что им в начале их бизнеса совсем не обязательно вкладывать большие деньги на «крутой» сайт, а достаточно воспользоваться открытыми библиотеками и единственное за что заплатить — это за то, чтобы взять в аренду виртуальный сервер.
В статье я покажу, как сделать простейший сайт, имеющий простую функциональность. Это скорее статья, посвященная именно тому, чтобы показать общую концепцию и помочь начинающим разработчикам сформировать понимание того, как именно создаются такие известные ресурсы, как Google, Facebook, Вконтакте.
Вы должны понимать, что все интернет-сервисы создаются по одному принципу, отличаются только детали и реализация каких-то уникальных и конкретных вещей, но суть остаётся единой.
Для тех, кто заинтересовался:
Подготовка
Установка того, что нам понадобиться:
Писать наш сервис мы будем на Java, как самом распространённом языке для веб-сервисов.
Проверьте, что на вашем компьютере установлена последняя версия Java, сейчас это 8 версия. Проверить это можно здесь проверить Java. В 97% случаях так оно и есть, но если это не так, то следуя инструкциями на этом сайте вы без труда исправите это, установив и настроив окружение.
Если же всё-таки это не удалось, сразу договоримся с вами так, первым делом вы пытаетесь решить проблему на этих сайтах:
Вообще, открою вам секрет, в программировании, когда у вас всё заработало с 1 раза — это означает только одно, что что-то не работает. Это неоспоримый факт. Куча ошибок, несовместимость версий, отсутствие в библиотеке классов и прочее — это нормальное явление.
Ваш покорный слуга сам просидел 3 недели с ошибкой, облазив такие закоулки интернета, что на какое-то время потерял связь с реальностью и пролежал несколько месяцев в психиатрической больнице, но не будем об этом… Это история для отдельной статьи.
Итак, Java стоит — всё хорошо.
Теперь нам нужен инструмент. Да, нам нужна идея. Качаем и ставим отсюда JetBrains.
Только учтите, что вам нужна именно Ultimate — версия. Простая версия не позволяет разрабатывать веб-приложения. Там есть бесплатный пробный период на 30 дней, думаю с этим не будет проблем.
Итак, среда разработки есть, Java есть.
Начнём
В своё время я перечитал кучу статей и прочего, и решил, что в этой статье я исключу по максимуму картинки и визуальную составляющую, обычно она только отвлекает, у меня может быть другая версия, другой порядок модулей и прочее.
Ваша альма-матер на первых порах — это 2 технологии:
«Application server». Что это такое? А вот, что Application server.
Так, нам нужен этот сервер, будем использовать Tomcat . Качаем его, если скачали то, что надо, а скорее всего скачали какую-нибудь фигню, то проверьте, архив должен называться «apache-tomcat-7.0.67.zip», разархивируем. Не забудьте, куда распаковали, пригодиться он вам ещё.
Концепция веб-ресурсов
Суть такая, сервер. Что такое сервер? Это программный код, который «зацикленно» крутиться в системе и слушает порты. Это тема отдельного разговора. Но в общем, рассмотрим 2 варианта того, что вообще сервер умеет делать, он умеет отдать данные (GET) — просто вернуть число, страницу, или ещё бог знает что. Но, есть ещё и POST — он тоже возвращает данные, но и принимает от клиента их перед этим.
Статья начинает слишком сильно расти. Теперь буду стараться писать более кратко.
Идём в мой репозиторий. Предполагаем, что человек совершенно не понимает, что такое система контроля версий, поэтому идём путём дилетанта, там есть кнопка («Download ZIP» — качаем и разархивируем).
В окне приветствия идеи есть кнопка «import project» — жмём. Выбираем скачанный и разархивированный проект.
Жмём далее, далее и далее, пока не откроется проект.
Первые сложности
Проект открыт, но вы не запустите сервер и не сможете открыть сайт. Почему? Потому что, идея не знает, что ей делать, она умна, но не настолько.
Не забудьте сообщить идее, что используем tomcat (как? ссылки вверху, по ним есть ответ).
Локальное тестирование сервиса
Получиться у вас должно примерно вот это:
Но есть проблема — не работает! Ну что же, этого следовало ожидать. У нас не создана таблица в базе данных. В проекте мы используем базу данных SQLite
Объяснить, что это такое будет с 0 не просто. Попробуйте почитать об этом на специализированных ресурсах.
В итоге, нам нужно создать нашу таблицу, делаем это так:
Таблица создана. Можно проверить как работает наша система. Добавьте пару имён и посмотрите, как они будут вам возвращены уже из самой базы.
Разбор кода
Начнём смотреть, что же у нас в коде:
Так уж повелось, что в Java все конфигурации пишутся в xml-файлах, тут не исключение — файл web.xml контролирует, то, какой сервлет за что отвечает. Внимательно посмотрите на код и попробуйте поменять ссылку или имя сервлета.
Приложение у нас простое, поэтому у всего 2 класса (SQLiteClass и MainServlet).
Очевидно, думаю, что первый отвечает за работу с базой данных, а второй и есть наш пресловутый сервлет.
А вот и наши, упомянутые выше POST и GET запросы, эти функции являются обработчиками и задают поведение сервлета в ответ на запросы от клиента. Суть одна — данные пришли, данные ушли. Ничего сложного. Попробуйте поиграться с методами.
Переходим к классу, реализующему JDBC:
Здесь тоже всё просто, те же SQL запросы, только завёрнутые в Java-код. Небольшой совет — остерегайтесь всяких надстроек и фреймворков. Они хороши только в больших проектах, когда у вас миллионы записей, и сложные транзакционные операции. Но, настоящий контроль вы получите только, когда пишете именно вручную запрос, без таких вещей как сериализация жить намного проще (особенно поначалу).
Всё, с серверной частью закончим. Тут вам придётся посидеть, почитать специальные статьи и руководства. Без реальной практики тут никак.
Клиентская часть
Вот и пришло время взглянуть на то, что твориться у клиента в браузере. А ничего сверхъестественного. Но, скажу вам прямо, конечно всё зависит от проекта, но, клиентская часть обычно намного сложнее в реализации, чем серверная. И всё в основном из-за JavaScript-а. Очень быстро клиентский код превращается в набор «простыней», заплат, хардкода и прочих веселостей. JavaScript суров и беспощаден. На чистом нём писать очень тяжело. Поэтому мы используем JQuery. Есть куча других фреймворков и другого творения, но их касаться здесь не будем. Есть такая поговорка, что назови любое слово и это будет названием JS-фреймворка. Известен в узких кругах фреймфорк Mocha, я не представляю какие мысли посещали человека, когда он придумывал ему название, ну ладно, это было его право, конечно же.
Итак, что у нас там с клиентом?
Тут рассмотрим только функцию
Что она делает? Правильно, шлёт тот самый POST — запрос и разбирает ответ. Всё просто, отдал данные и получил с сервера. По русски он говорит серверу «Дай мне имена всех, кто у тебя в базе» или «Занеси в базу это имя» и даёт ему имя.
Вот и вся клиентская часть.
Отправляем ресурс в настоящий мир
Тут я опишу лишь общий принцип сего действия. Это так или иначе потребует от вас денег на сервер, поэтому маловероятно, что кто-то действительно этим будет заниматься, особенно в самом начале своего программистского пути. Но понимать общую концепцию вы должны уже сейчас. Если кто решиться — знайте вы молодцы, вполне вероятно из вас может выйти толк.
И по традиции сразу несколько ссылок:
Читаем, что там написано, формируем в голове общую концепцию, того, как происходит взаимодействие программиста и удаленного сервера.
Сами сервера можно приобрести на amazone. Ссылку не даю, ибо реклама, можете сами поискать, это не сложно. Есть бесплатный тестовый период. НО! Будьте предельно осторожны, ваш покорный слуга сам слышал истории, как со счетов списывались тысячи долларов без ведома хозяина, ибо система сама умеет докупать себе мощности. Не попадитесь, я сам уже платил несколько раз за непонятные услуги, там всё на английском. Если не уверены, что делаете — лучше вообще не делайте.
Порядок действий таков:
- Арендуете облако
- Подключаетесь по протоколу ssh
- Ставите нужные пакеты и настраиваете систему
- Собираете у себя war-пакет и деплоите его на сервер
- Решаете кучу ошибок и проблем
На всякий случай я оставлю тут эти ссылки, вдруг, кто-то застопорился на каком-то моменте и решил спуститься в самый низ статьи, может помогут:
Заключение
Вот мы и добрались до кульминации нашего здесь обсуждения Джавы и веб-разработки на ней. Сложно? Да. Интересно? Да. Все, абсолютно все сервисы, будь то, поисковая система с миллиардами индексов, будь то видео-сервис с миллионами стрим-каналов — всё строиться по одному принципу. Отдать — забрать данные. Понимая эту концепцию вы сможете написать любую систему, сервис или платформу.
1- Введение
В данной статье я покажу вам шаг за шагом, как создать простое веб-приложение, комбинируя Servlet + JSP + Filter + JSP EL + JDBC. Убедитесь, что у вас есть твердое знание про Servlet, JSP, Filter и JDBC перед выполнением. Если нет, то вы можете посмотреть по ссылке:
Примечание: В данной статье я только познакомлю вас с функцией "Login" и функцией "Remember Me". И не буду обрабатывать безопасность страниц, если вы хотите иметь приложение с защитой для каждой страницы, смотрите статью ниже:
2- Основные принципы программирования Servlet + JSP
Это принципы, которые вы должны запомнить чтобы разработать веб-приложене используя Servlet + JSP удовлетворяя критерии: простой код, легко понять и содержать.
- Никогда не позволяйте пользователям иметь доступ прямо к вашей странице JSP.
- Считать JSP только для отображения интерфейса.
- Servlet выполняет роль управления потоком приложения и обрабатывает программную логику.
- Открывает соединение JDBC и управляет транзакциями в Filter (не обязательно)
- Источник статических данных (image, CSS, JS, . )
- Или Servlet.
Когда запрос пользователя поступает к Servlet, он обработает запрос пользователя, например,Insert, update и запрос данных, и в конце перенаправляет (forward) на страницу JSP для отображения данных. Таким образом, каждый Servlet имеет 0 или много соответствующих страниц JSP (обычно нужно только 1).
Считать JSP только местом отображения данных, это означает, что вы не должны обрабатывать логику приложения в JSP, например update, insert,delete . и не навигировать на странице JSP.
3- Demo веб приложения, который вы выполним
Вы можете предварительно посмотреть на демо (Demo) веб-приложения который будет выполнен:
Вы наверняка слышали о том, что сайты можно делать на PHP, Python и довольно не плохие сайты. Но как же Java? Да на java тоже можно делать очень даже офигенные сайты, а если быть точней то используют java для разработки крупных ресурсов. В этом уроке я покажу как создать простое web-приложение на java.
Что нам потребуется для создания web-приложения?
1) Любой сервер приложений в нашем случае это будет Tomcat 7.0.
2) Верная и надежная Intellij IDEA.
3) Желание создать своё первое WEB-приложение.
Шаг 1
Создаем обычный Maven проект, назовем его MyFirstWebProject. Структура проекта следующая:
Шаг 2
А также не забудьте указать:
это говорит Maven-у что собирать надо в WEB проект, по умолчанию он собирает jar.
Теперь нужно добавить 2 плагина который позволяет откомпилировать и собрать проект в war архив.
Полный листинг pom.xml:
Шаг 3
Шаг 4
Теперь соберите проект в Maven:
Шаг 5
Установка и настройка Tomcat 7.0.
2. Извлекаем с архива;
3. Настроить Intellij IDEA что бы деплоить приложение на сервер с нее.
Дальше заходим во вкладкуDeployment:
И выбираем ваш собранный проект, лежит он в корне проекта в папке target/<name>.war
Шаг 6
Завяжем на наш сервлет jsp страничку.
Для этого мы должны создать в папке src/main/webapp нашу страничку, в нашем случае это index.jsp.
Вот так будет выглядеть наш метод сервлета doGet():
С помощью RequestDispatcher мы отправляем наш response request клиенту.
А так будет выглядеть index.jsp
С помощью конструкции $ мы принимаем данные с сервера.
После этого вы получите ту же по виду страничку, только это уже будет не сервлет отображать а jsp.
Для получения углубленных знаний по Java проходите наш курс «Программирование на языке Java для начинающих», а также читайте серию статей «Spring Data JPA. Работа с БД»: часть 1, часть 2 и часть 3
Читайте также:
- Почему на wink заблокированы каналы в приложение телефоне
- Топ приложений для бодибилдинга на андроид
- Как посмотреть сколько часов ты был в приложении
- Как вывести деньги с пушкинской карты на карту сбербанка через телефон
- Как московским князьям удалось устранить суверенитет новгорода см приложение 10 в 1478 г