Kwert-soft.ru

IT Софт для ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Веб приложение на java

Создаём веб-приложение с Java Servlets

  • Переводы, 18 марта 2018 в 14:35
  • Никита Прияцелюк

Одной из самых приятных особенностей Java является её многогранная природа. Конечно, создание традиционных десктопных и даже мобильных приложений — это здорово. Но что, если вы хотите уйти с проторенных дорожек и зайти на территорию разработки web приложений на Java? Для вас есть хорошая новость: в комплекте с языком идёт полноценный Servlet API, который позволяет вам создавать надёжные веб-приложения без особых хлопот.

Это статья для продолжающих. Если вы только начинаете знакомство с Java, советуем пройти быстрый старт, посмотреть видеокурс и выбрать одну из книг для новичков.

Создание приложений на Java с помощью Servlets

Встречайте сервлеты, особый тип Java-программ, выполняемый в пределах веб-контейнера (также называемый контейнером сервлетов, как, например, Tomcat и Jelly), которые позволяют обрабатывать запросы клиентов и ответы сервера просто и эффективно. Сейчас не время и не место дотошно объяснять вам, что из себя представляет сервлет. Достаточно сказать, что сервлеты создаются и уничтожаются их контейнерами, а не разработчиком, и действуют как промежуточный уровень между клиентами (как правило, веб-браузерами) и другими приложениями, запущенными на сервере (например, базами данных).

Сервлет — классная штука, которая помимо всего прочего может принимать данные от клиента, как правило через GET и POST-запросы, работать с cookie и параметрами сеанса. А ещё она обрабатывает данные через дополнительные уровни приложений и отправляет выходные данные клиенту как в текстовом, так и в бинарном форматах (HTML, XML, PDF, JPG, GIF и т.д.), во многих случаях используя Java Server Pages (JSP) файлы.

Лучше всего начинать работу с сервлетами через конкретный пример. Мы создадим простое веб-приложение, которое позволит клиентам регистрироваться с помощью простой HTML-формы. Данные, предоставленные клиентами, будут собираться сервлетом и проверяться валидаторами.

Разбираемся с конфигурационными файлами

Чтобы вы понимали структуру нашего будущего приложения, вот как она будет выглядеть:

Первым шагом к созданию приложения является определение так называемого дескриптора развёртывания. Он указывает, как приложение должно быть развёрнуто в определенной среде. Когда дело касается веб-приложений, дескриптор развёртывания представляет собой простой XML-файл, называемый web.xml и является частью стандартной спецификации Java EE. В нашем случае он будет выглядеть так:

Как вы видите, web . xml только определяет версию Java Servlet Specification (3.1), которую мы будем использовать в приложении. Разумеется, в нём может быть гораздо больше содержимого, включая директивы сопоставления сервлетов, параметры инициализации, список приветственных файлов и несколько дополнительных настроек. Но чтобы не усложнять процесс разработки, давайте оставим его таким как есть.

LATOKEN, Москва, от 4000 до 6000 $

Так как наше приложение будет использовать Servlet API и Java Servlet Pages (JSP) для отображения данных клиента, нам нужно загрузить все необходимые JAR. Maven сделает за нас трудную работу, вот как будет выглядеть файл POM:

Если говорить просто, pom.xml определяет все зависимости, необходимые для работы с сервлетами: JSP, Java Standard Tag Library (JSTL) и Java Expression Language (JEL).

Итак, мы уже создали конфигурационные файлы приложения. Однако в текущем состоянии оно буквально ничего не делает. Мы хотим, чтобы клиенты могли регистрироваться с помощью HTML-формы, поэтому следующее, что нам нужно сделать, — это создать JSP-файлы, которые будут отображать вышеупомянутую форму и данные клиента после успешного завершения регистрации. Этим мы сейчас и займёмся.

Работаем над внешним видом

Внешний вид приложения будет определяться двумя JSP-файлами — в контексте MVC они называются представлениями. Первый будет отвечать за отображение формы регистрации и возможных ошибок, вызванных после проверки введённых данных. Второй будет обычной страницей приветствия, в которой будут показаны данные, введённые клиентом, после успешного завершения процесса регистрации.

Вот первый JSP-файл:

Файл содержит простой HTML с парочкой дополнений. Вот она, прелесть JSP в сочетании с JSTL и JEL. Обратите внимание на то, как легко проверить наличие ошибок валидации, используя такие стандартные теги, как и .

Атрибут формы регистрации action указывает на следующий URL: $/processcustomer . Это значит, что каждый раз, когда клиент пытается зарегистрироваться, данные будут отправляться в processcustomer независимо от URL, по которому доступна форма. Это достигается за счёт функциональности объектов, доступных из JSP-файла, таких как request .

Скоро мы увидим, как сервлет связывается с URL processcustomer и как он взаимодействует с введёнными данными. А пока давайте посмотрим на JSP-файл, который отвечает за страницу приветствия:

Теперь, когда мы разобрались с отображением страниц, следующим шагом будет создание сервлета, ответственного за сбор данных клиента из POST-запросов и подтверждение данных простым способом.

Пишем контроллер

Написать сервлет, способный получить данные из формы регистрации, проще простого. Всё, что нам нужно сделать, — это написать подкласс для класса HttpServlet и реализовать его методы doGet() или doPost() (или оба, если надо). В данном случае сервлет будет взаимодействовать с данными, поступающими из POST-запросов.

Вот как он выглядит:

Первое, на что здесь стоит обратить внимание, — использование аннотации @WebServlet(name =»CustomerController», urlPatterns = «/processcustomer») . Она говорит контейнеру сервлета использовать класс CustomerController для обработки HTTP-запросов по адресу /processcustomer . Того же эффекта можно достичь путём добавления директив сопоставления сервлетов в web.xml , как здесь, но так как мы используем Servlet Specification 3.1 нам нет необходимости прибегать к такому способу.

Здесь мы назвали сервлет CustomerController , так как считается хорошей практикой использовать имя класса сервлета в качестве значения атрибута name аннотации @WebServlet . В противном случае некоторые контейнеры не смогут выполнить сопоставление, что приведёт к ошибке 404.

Сам класс CustomerController выполняет несколько простых задач. Во-первых, он собирает введённые в форму данные, используя реализацию интерфейса HttpServletRequest , который содержит значения, соответствующие полям firstname , lastname и email формы. Затем он устанавливает эти значения в качестве атрибутов запроса, поэтому их можно повторно отобразить либо в форме, либо на странице с результатами. Наконец, валидаторы проверяют правильность введённых данных.

Валидаторы — это простые классы, которые проверяют определённые свойства, например, является ли строка пустой и выглядит ли email как email. На GitLab автора можно посмотреть на их реализацию.

Результат валидации влияет на дальнейший ход событий: если данные не валидны, клиент перенаправляется через объект RequestDispatcher на страницу регистрации, где отображаются соответствующие ошибки. Если всё в порядке, то отображается страница приветствия.

Итак, мы создали целое веб-приложение на Java, которое позволяет зарегистрировать клиентов с помощью HTML-формы, базового сервлета и нескольких JSP-файлов. Пора его запустить.

Запускаем приложение

Для запуска приложения нужно проделать следующие шаги:

  1. Для начала нам понадобится Git (убедитесь, что скачиваете подходящую версию), Maven и контейнер сервлета (например, Apache Tomcat, Jetty, или JBoss Wildfly). Если что-то из этого уже включено в вашу IDE, то вы можете использовать встроенный вариант.
  2. Используйте Git, чтобы клонировать репозиторий приложения, и импортируйте его в вашу IDE, желательно как проект Maven.
  3. Разверните проект в контейнере сервлета и запустите его. Развёртывание подразумевает создание WAR-файла или exploded WAR и его помещение в папку развёртывания контейнера по умолчанию. Зачастую IDE способна сделать развёртывание за вас, поэтому не перегружайте себя лишней работой и посмотрите документацию вашей IDE (документация для IntelliJ IDEA). Когда вы развернёте проект и запустите его, должен запуститься бразуер по умолчанию с окном регистрации.
  4. Попробуйте заполнить не все поля в форме или вовсе не заполнить их и вы увидите, как поверх соответствующих полей отобразятся ошибки. Введите всё как положено, и вас перенаправит на страницу приветствия.

Заключение

Итак, вы приобрели все навыки, необходимые для создания собственного веб-приложения на Java без необходимости прибегать к сложным фреймворкам. Всё, что вам нужно, — Servlet API, технология вроде JSP для отображения и встроенные средства Java. Здорово, правда?

Стоит отметить, что реализация класса CustomerController подчеркивает достоинства и недостатки сервлетов: с одной стороны, он вкратце показывает, насколько легко обрабатывать параметры запроса и отправлять ответы клиенту в разных форматах. Но эта функциональность имеет свою цену: обе реализации интерфейсов HttpServletResponse и HttpServletResponse являются обычными локаторами служб. Нельзя сказать, что это плохо, поскольку локаторы просто содержат данные. Однако нужно помнить, что эти реализации будут всегда привязаны к сервлету.

Простейшее web-приложение на Java на сервере Tomcat

Учебный пример для работы с Java сервером в Windows.

27.04.2017 7 комментариев 54 667 просмотров

В статье рассказывается о том, как поднять на своем компьютере локальный java сервер и прописать простейшее web-приложение.

Содержание

Введение

Tomcat нужен для работы Java сервера с применением сервлетов. Если грубо говоря, то сервелеты это аналог тех же php скриптов. На сервер Tomcat от клиентов приходят запросы. В зависимости от них сервер запустит те или иные сервелеты, которые сформируют ответы в виде текстовых файлов. Чаще всего это html страницы.

Установка JDK

Устанавливаем JDK. Если уже до этого устанавливали, то повторно не устанавливаем.

Если у вас в папке с java есть только папка с названием jdk, но нет с названием jre, то аналогичным способом устанавливаем jre.

Для работы современных версий Android Studio или IntelliJ IDEA не нужно производить дополнительные действия, чтобы программы могли найти JDK и запускать java приложения. Но мы будем на данный момент компилировать сервлеты вручную, так что для удобства мы пропишем путь к папке JDK в системную переменную Path в Windows. Ниже приведена инструкция для Windows 10.

У меня JDK находится в папке C:Program FilesJavajdk1.8.0_121bin .

Кликните правой кнопкой по иконке Этот компьютер и перейдите в Свойства .

Внимание! Не вздумайте удалять всё содержимое переменной Path . Иначе у операционной системы возникнут очень большие проблемы. Вы должны дописать в эту переменную нужный путь.

Установка Apache Tomcat

Скачиваем установочный файл.

Эти компоненты должны быть выбраны.

Для учебных целей можно параметры оставить по умолчанию.

Далее нужно указать путь к JRE (устанавливается при установке JDK). Обычно программа сама находит папку.

Далее всё стандартно.

После этого в трее должен появится значок запущенного сервиса.

Перейдите по адресу http://localhost:8080/. Если вы видите это, то всё хорошо.

Кстати, потом включать (например, при перезапуске компа) сервер можно запуском программы Monitor Tomcat из Пуска .

Создание и сборка сервлета вручную

Напишем первое web-приложение вручную без каких-либо IDE.

Перейдем в папку, где установлен Tomcat. У меня это папка C:Program FilesApache Software FoundationTomcat 9.0 . Запомните этот путь, так как он вам еще много раз пригодится.

Выше говорилось, что сервлеты чем-то похожи на php скрипты (упоминание для тех, кто знает php). Но есть одна существенная разница. В php можно написать файл скрипта, закинуть в соответствующую папку и web-приложение готово. С java такой трюк не пройдет. Нам соответствующие сервлеты нужно будет скомпилировать в байт-код и уже с сгенерированными .class файлами работать.

Итак, где-нибудь создайте произвольную папку. Советовал бы не использовать русские буквы, пробелы. И в пути к папке тоже желательно обойтись без русских букв. Я на рабочем столе создал папку testapp .

Дорожная карта web-разработчика Java в 2019 году

Java – это огромная экосистема, в которой легко потеряться. Это подробный гайд по фреймворкам с подборкой книг и лайфхаков.

Почему Java?

Java – технология с долгой историей. Вокруг нее постоянно растут стеки инструментов. Потом они становятся монструозными, и на смену им приходят новые. Против Java ведется политическая война со стороны других корпораций. Этот язык программирования никогда не будет модным. Он не выглядит сексуально с его бойлерплейт-кодом и слухами о плохой производительности.

При этом экосистема Java является стандартом де-факто для корпоративной разработки. Платформа уверенно занимает нишу в мобильных технологиях и Web. Реализованы шикарные инструменты для big data, такие как Hadoop и Spark. Все это взято у конкурентов без боя: бизнес требует от инструментов разработки прозрачности и надежности. Поэтому Java с её безопасностью кода, хорошим подходом к многопоточности и низкому порогу вхождения для свежих разработчиков, дает бизнесу то, что ему нужно.

Для новичков Java привлекательна простым и понятным синтаксисом, плавной кривой обучения. Назойливые проблемы со всякими низкоуровневыми штуками вроде менеджмента памяти и кроссплатформенности JVM берет на себя. Поэтому учиться легко, а после всегда можно найти хорошее рабочее место.

Быстрый старт

Для начала нужно установить JDK и любую IDE. Из версий сейчас самая популярная 8-я. Из IDE можно начать с IntelliJ IDEA.

Есть две классических Java книги, которые рекомендуются сообществом к изучению. Это «Effective Java» Джошуа Блоха и «Философия Java» Брюса Эккеля. Но чтение толстых книг в начале обучения фундаментальным основам языка – не самый эффективный и быстрый путь влиться. Лучше взять за основу что-нибудь проще. Например, «Head First Java», её чтение не утомляет.

Так почему «Идея»?

Разработчик IntelliJ IDEA создал отличный плагин EduTools, который встраивается прямо в IDE. Он содержит в себе упражнения, позволяющие быстро изучить основы языка в интерактивном режиме. Этого инструмента, в сочетании с литературой, вполне достаточно для построения базы.

Если есть хороший технический бэкграунд в другом объектно-ориентированном языке программирования, то можно срезать углы. Потому что существует класс книг, написанных специально для таких «новичков». Например, «Java for C/C++ Developers» от Michael C. Daconta. В таких книгах обычно перечисляются ключевые отличия одной технологии от другой. Это экономит время на обучение, фокусируя только на нужных деталях.

Обучение через тестирование

Область, которую предстоит изучить, огромна. Нет границ, которые позволят уверенно сказать «всё, теперь я знаю Java». Ни прочитанные книги, ни написанные программы, ни пройденные курсы, ни освоенные технологии.

С момента, когда мы начинаем обучаться, обучение становится стилем жизни. Нужно в свободное время читать по Java всё, что попадается под руку, любые непонятные вещи должны браться на заметку и включаться в учебный план. Вышеназванные фундаментальные книги также служат этой цели и цели общего структурирования своего плана. Можно обратить внимание на качественные подборки материалов по Java и поискать там пищу для размышлений.

Заведите метрики для отслеживания прогресса. Для этого нужно проходить тесты достаточно часто, благо сейчас их много в Интернете. Мы проходим Java тест, смотрим на результат, ищем пробелы в знаниях, выписываем, гуглим, восполняем. Это хорошая стратегия, она эффективнее последовательного изучения книги за книгой. Хороший маркер – это когда вы написали какой-то код, а спустя время поняли, что он плох. Хорошим финалом при этом будет прохождение OSJP – самой авторитетной сертификации от Oracle.

Что еще?

Стек Java для web-приложений многогранен, и нужно на базовом уровне овладеть и смежными технологиями.

Для начала стоит представлять типовую архитектуру того, что делает web-разработчик. Всё, что видит перед собой пользователь в браузере – это клиент или frontend-часть приложения. Данные и команды, инициированные действиями пользователя, отправляются на сервер по протоколу HTTP в соответствии с определенными договоренностями об их формате и значении. Эти договоренности формируют web API приложения и реализуются надстройками над HTTP вроде RESTful или, реже, GraphQL. Данные обычно упаковываются в JSON или XML, хотя есть место и кастомным реализациям.

Серверная часть приложения, backend, принимает данные, десериализует их во внутреннее представление, осуществляет авторизацию и аутентификацию пользователя, валидацию пришедшей информации, реализует какую-то бизнес-логику, сохраняет часть информации в БД и формирует необходимый ответ для клиента. Само приложение для взаимодействия с клиентом может поднимать встроенный web-сервер или само встраиваться в сторонний web-сервер.

Это значит, что нам необходимо иметь ясное представление о:

  • СУБД и SQL, реляционном и нереляционном хранении данных. Для этого рекомендуется книга «Head First SQL» + ознакомление со статьями по NoSQL для общей эрудиции. Погонять запросики помогут удобные online-сервисы.
  • Протоколе HTTP и передаче данных. Фундаментальная вещь – это «Компьютерные сети» Эндрю Таненбаума и первые общие главы любой книги по PHP от Дмитрия Котерова. Несмотря на другой язык программирования, автор дает очень хорошее общее понимание взаимодействия клиента и сервера.
  • JSON и XML. Достаточно просто статей из Википедии для общего понимания этих форматов.
  • Javascript и HTML. Базовые знания нужны, потому что часто backend генерирует странички, выдаваемые в браузер, например, по технологии JSP. Достаточно посмотреть путь javascript-разработчика и выбрать то, что приглянулось. Хотя можно взять за основу что-то вроде Vaadin, который на выходе сгенерирует Javascript-код и подтянет нужные стили по Java-коду.

Pet project

При изучении Java очень важно соблюдать баланс между теорией и практикой, причем реализация учебных программ из упражнений относится к теории. Плохо сидеть в учебниках и смотреть лекции на Youtube без написания реального (условно) приложения. Также плохо бросаться в код и городить костыли; если будет сделано рабочее приложение, но не будут приобретены знания – это тоже впустую потраченное время.

Хороший подход – придумать идею web-сервиса и постепенно реализовывать его, шаг за шагом, по мере приобретения новых знаний. Это может быть ToDo List или каталог просмотренных фильмов, дневник или маленький движок форума, игрушечные CMS или CRM. Это нормально, если код придется часто переписывать, порой с нуля: это говорит о прогрессе.

Очень важно сделать все «велосипедом», с минимумом дополнительных библиотек и уж точно без фреймворков. Самописный web-сервер на основе сокетов, маршаллер XML/JSON, собственные контейнеры. Не обойдется без изучения рефлексии и базовых паттернов (лучшая книга по шаблонам разработки — GoF). Код на выходе получится ужасным, но основное тут – получить набор проблем, которые очень красиво решаются фреймворками.

Со списком этих проблем и задач дальнейшее изучение экосистемы Java пройдет просто молниеносно. Поэтому мучения по написанию сотен строк кода, которые заменяются парой строк при подключении фреймворка, окупятся сторицей.

Java EE и Spring

Java Enterprise Edition и фреймворк Spring постоянно идут рука об руку в обучении. Важно понимать их различия и сходства. Формально говоря, Java EE (Jakarta EE) – это спецификация, описывающая архитектуру серверной части приложения. Отчасти, Java стала столь популярной технологией благодаря смещению акцента разработки на бизнес-логику. Если вы приходите к заказчику, предприятию, то его не интересуют технические детали. Зато его интересует, каким образом новый продукт улучшит его жизнь и принесет финансовую прибыль.

Набор спецификаций согласует все части приложения и гарантирует их взаимную работу. Так вводится парадигма предметно-ориентированного проектирования. Все хорошо понятные бизнесу предметные области выделяются и перекладываются в чистый Java-код. Затем пишется интеграция между ними, декларируется сквозной путь данных в процессе обмена. В итоге получается пакет кода, описывающего бизнес-логику ПО. А реализация всех технических деталей ложится на сервер приложений. Этот класс ПО называется middleware, его примерами являются WebSphere, Weblogic, WildFly. Такой контейнер, по сути, одна большая зависимость, которая и «поставляет» функционал в соответствии с написанной логикой.

Spring же – просто фреймворк. Java EE – это не самая удачная попытка стандартизации, ставшая тяжеловесной, а Spring изначально появился как легкая и понятная альтернатива. Впрочем, и Spring разросся со временем и появился фреймворк над фреймворком – Spring Boot.

В процессе обучения лучшая стратегия – ознакомиться и с той, и с другой платформой. Для изучения Java EE отлично подходят книги «Head First Servlets and JSP» и «Программирование web-приложений на языке Java» Буди Курняван. Для Spring – «Spring в действии» Крейга Уоллса. Так как Spring включает в себя очень много всего, сфокусироваться для начала следует на модулях Core, MVC и Web-MVC и Security.

Какой стек выбрать?

Когда придет понимание, что Spring Beans похожи на EJB, Spring Service Locator – на JNDI, Spring Security – на JAAS, Spring Data – на JPA и т. д., это станет важнейшим майлстоуном в обучении. Вторым будет ознакомление с хорошими реализациями, постижение best practices. В случае Spring можно воспользоваться кодогенератором JHipster – сгенерированный этим инструментом код имеет хорошую структуру и задействует множество популярных технологий. Кстати, в дальнейшем этот сервис можно будет использовать для быстрого прототипирования.

В дальнейшем можно сфокусироваться на одной из платформ, а за развитием второй просто следить в фоновом режиме, углубляя эрудицию. Порой придется выбирать какую-то технологию, исходя из того, что более подходит к задаче. Например, на Java EE с её JSF и PrimeFaces легче сделать масштабируемое приложение с генерируемым сервером клиентом. А на Spring легко делаются модные микросервисы. Но это все условно – порой эффективнее разрабатывать на хорошо знакомом фреймворке, а не на том, который лучше приспособлен.

Что дальше?

Помимо основных фреймворков, в Java куча всего полезного. Например, Jasper для построения отчетов в реальном времени. Или JOOQ для создания запросов к базам данных. Нужно уметь тестировать свой код при помощи JUnit или Mockito. Полезно использовать Sonar для валидации стиля кода. Если предполагается большой объем данных, то почти наверняка придется столкнуться с Hadoop. А Gradle и Maven помогут систематизированно управлять жизненным циклом своего ПО.

В этом многообразии легко потеряться. Поэтому важнее не изучать эти инструменты, а изучать информацию о них. Где они применяются, в чем ключевые особенности. И использовать их только тогда, когда без них не обойтись. Потому что вряд ли придется писать сложный код на Gradle. А большую часть Maven-инструкций можно просто скопировать со StackOverflow. Нет нужды читать книги толщиной с руку по этим технологиям, тратя лишнее время.

Помимо Spring и Java EE, есть также Spark и Play, Struts и Grails. Их нужно обязательно попробовать. Хотя бы для того, чтобы понять, что есть жизнь и без Spring с его DI. Развитие эрудиции по всему многообразию инструментов и фокус на одном из инструментов – лучшая стратегия в обучении.

Веб-платформа на Java за 30 минут

Опытные разработчики могут не читать дальше, так-как эта статья рассчитана скорее на новичков, но всё-же я был бы очень рад, если бы кто-нибудь оставил конструктивную критику в мой адрес или указал на ошибки.

В этой статье я бы хотел рассказать начинающим разработчикам, как можно с минимальными усилиями создать свою веб-платформу начального уровня.

В статье я расскажу, как практически с нуля можно, даже не владея огромным стеком технологий, развернуть на удаленном облаке свой собственный уютненький ресурс. Это может быть ваш личный блог, какой-то интересный сервис или просто ресурс о котором вы давно мечтаете. Что может быть приятнее, чем отправить другу ссылку на свой собственный ресурс и вместе обсудить какие-то интересные моменты или просто посмеяться.

Для предпринимателей или начинающих бизнесменов, или владельцев каких-либо площадок будет интересно узнать, что им в начале их бизнеса совсем не обязательно вкладывать большие деньги на «крутой» сайт, а достаточно воспользоваться открытыми библиотеками и единственное за что заплатить — это за то, чтобы взять в аренду виртуальный сервер.

В статье я покажу, как сделать простейший сайт, имеющий простую функциональность. Это скорее статья, посвященная именно тому, чтобы показать общую концепцию и помочь начинающим разработчикам сформировать понимание того, как именно создаются такие известные ресурсы, как Google, Facebook, Вконтакте.

Вы должны понимать, что все интернет-сервисы создаются по одному принципу, отличаются только детали и реализация каких-то уникальных и конкретных вещей, но суть остаётся единой.

Для тех, кто заинтересовался:

Подготовка

Установка того, что нам понадобиться:

Писать наш сервис мы будем на Java, как самом распространённом языке для веб-сервисов.

Проверьте, что на вашем компьютере установлена последняя версия Java, сейчас это 8 версия. Проверить это можно здесь проверить Java. В 97% случаях так оно и есть, но если это не так, то следуя инструкциями на этом сайте вы без труда исправите это, установив и настроив окружение.

Если же всё-таки это не удалось, сразу договоримся с вами так, первым делом вы пытаетесь решить проблему на этих сайтах:

Вообще, открою вам секрет, в программировании, когда у вас всё заработало с 1 раза — это означает только одно, что что-то не работает. Это неоспоримый факт. Куча ошибок, несовместимость версий, отсутствие в библиотеке классов и прочее — это нормальное явление.

Ваш покорный слуга сам просидел 3 недели с ошибкой, облазив такие закоулки интернета, что на какое-то время потерял связь с реальностью и пролежал несколько месяцев в психиатрической больнице, но не будем об этом… Это история для отдельной статьи.

Итак, Java стоит — всё хорошо.

Теперь нам нужен инструмент. Да, нам нужна идея. Качаем и ставим отсюда JetBrains.

Только учтите, что вам нужна именно Ultimate — версия. Простая версия не позволяет разрабатывать веб-приложения. Там есть бесплатный пробный период на 30 дней, думаю с этим не будет проблем.

Итак, среда разработки есть, Java есть.

Начнём

В своё время я перечитал кучу статей и прочего, и решил, что в этой статье я исключу по максимуму картинки и визуальную составляющую, обычно она только отвлекает, у меня может быть другая версия, другой порядок модулей и прочее.

Часто вижу вопросы от новичков про такие интересные вещи, как Spring и Hibernate (https://spring.io/, hibernate.org). В 96% случаях вам это пока что не надо, и без хорошей подготовки и хорошего скилла «solve problem» вы увязните там очень надолго и выбраться обратно будет очень тяжело.

Ваша альма-матер на первых порах — это 2 технологии:

  • Сервлет
  • JDBC

Вы должны иметь хотя бы общее представление об этих вещах, иначе дальше двигаться будет практически невозможно.

«Application server». Что это такое? А вот, что Application server.

Так, нам нужен этот сервер, будем использовать Tomcat . Качаем его, если скачали то, что надо, а скорее всего скачали какую-нибудь фигню, то проверьте, архив должен называться «apache-tomcat-7.0.67.zip», разархивируем. Не забудьте, куда распаковали, пригодиться он вам ещё.

Концепция веб-ресурсов

Суть такая, сервер. Что такое сервер? Это программный код, который «зацикленно» крутиться в системе и слушает порты. Это тема отдельного разговора. Но в общем, рассмотрим 2 варианта того, что вообще сервер умеет делать, он умеет отдать данные (GET) — просто вернуть число, страницу, или ещё бог знает что. Но, есть ещё и POST — он тоже возвращает данные, но и принимает от клиента их перед этим.

Если ничего не понятно, читаем тут ru.wikipedia.org/wiki/REST.

Статья начинает слишком сильно расти. Теперь буду стараться писать более кратко.

Идём в мой репозиторий. Предполагаем, что человек совершенно не понимает, что такое система контроля версий, поэтому идём путём дилетанта, там есть кнопка («Download ZIP» — качаем и разархивируем).

В окне приветствия идеи есть кнопка «import project» — жмём. Выбираем скачанный и разархивированный проект.

Жмём далее, далее и далее, пока не откроется проект.

Первые сложности

Проект открыт, но вы не запустите сервер и не сможете открыть сайт. Почему? Потому что, идея не знает, что ей делать, она умна, но не настолько.

Объяснение того, как это сделать, заняло бы пару страниц и оказало бы вам «медвежью» услугу. Первые сложности — первые трудности. Это будет вашим «боевым крещением». Программировать — не пирожки печь. Ссылки сверху вам помогут. Потратить 1-2 часа на это — это нормально. Я знаю хороших и опытных программистов, которые сидели несколько дней, но так и не сумели правильно запустить сервер. Это не делает им чести — но факт — есть факт. Вперед. Запустите — возвращайтесь к чтению.

Не забудьте сообщить идее, что используем tomcat (как? ссылки вверху, по ним есть ответ).

Локальное тестирование сервиса

Получиться у вас должно примерно вот это:

Но есть проблема — не работает! Ну что же, этого следовало ожидать. У нас не создана таблица в базе данных. В проекте мы используем базу данных SQLite

Объяснить, что это такое будет с 0 не просто. Попробуйте почитать об этом на специализированных ресурсах.

Могу посоветовать хороший сервис: www.codecademy.com (там есть Java, SQL, Git, JavaScript и другие супер полезные вещи), поэтому милости прошу.

В итоге, нам нужно создать нашу таблицу, делаем это так:

Таблица создана. Можно проверить как работает наша система. Добавьте пару имён и посмотрите, как они будут вам возвращены уже из самой базы.

Разбор кода

Начнём смотреть, что же у нас в коде:

Так уж повелось, что в Java все конфигурации пишутся в xml-файлах, тут не исключение — файл web.xml контролирует, то, какой сервлет за что отвечает. Внимательно посмотрите на код и попробуйте поменять ссылку или имя сервлета.

Приложение у нас простое, поэтому у всего 2 класса (SQLiteClass и MainServlet).

Очевидно, думаю, что первый отвечает за работу с базой данных, а второй и есть наш пресловутый сервлет.

А вот и наши, упомянутые выше POST и GET запросы, эти функции являются обработчиками и задают поведение сервлета в ответ на запросы от клиента. Суть одна — данные пришли, данные ушли. Ничего сложного. Попробуйте поиграться с методами.

Переходим к классу, реализующему JDBC:

Здесь тоже всё просто, те же SQL запросы, только завёрнутые в Java-код. Небольшой совет — остерегайтесь всяких надстроек и фреймворков. Они хороши только в больших проектах, когда у вас миллионы записей, и сложные транзакционные операции. Но, настоящий контроль вы получите только, когда пишете именно вручную запрос, без таких вещей как сериализация жить намного проще (особенно поначалу).

Всё, с серверной частью закончим. Тут вам придётся посидеть, почитать специальные статьи и руководства. Без реальной практики тут никак.

Клиентская часть

Вот и пришло время взглянуть на то, что твориться у клиента в браузере. А ничего сверхъестественного. Но, скажу вам прямо, конечно всё зависит от проекта, но, клиентская часть обычно намного сложнее в реализации, чем серверная. И всё в основном из-за JavaScript-а. Очень быстро клиентский код превращается в набор «простыней», заплат, хардкода и прочих веселостей. JavaScript суров и беспощаден. На чистом нём писать очень тяжело. Поэтому мы используем JQuery. Есть куча других фреймворков и другого творения, но их касаться здесь не будем. Есть такая поговорка, что назови любое слово и это будет названием JS-фреймворка. Известен в узких кругах фреймфорк Mocha, я не представляю какие мысли посещали человека, когда он придумывал ему название, ну ладно, это было его право, конечно же.

Итак, что у нас там с клиентом?

Опять дам ссылку на отличнейший ресурс www.codecademy.com. Фронтенд там разобран очень хорошо и даёт необходимую базу для начинающих.

Тут рассмотрим только функцию

Что она делает? Правильно, шлёт тот самый POST — запрос и разбирает ответ. Всё просто, отдал данные и получил с сервера. По русски он говорит серверу «Дай мне имена всех, кто у тебя в базе» или «Занеси в базу это имя» и даёт ему имя.

Вот и вся клиентская часть.

Отправляем ресурс в настоящий мир

Как можно было заметить, наш сервис крутиться на локальном хосте. Другими словами на нашем же компьютере. Пришло время это исправить.

Тут я опишу лишь общий принцип сего действия. Это так или иначе потребует от вас денег на сервер, поэтому маловероятно, что кто-то действительно этим будет заниматься, особенно в самом начале своего программистского пути. Но понимать общую концепцию вы должны уже сейчас. Если кто решиться — знайте вы молодцы, вполне вероятно из вас может выйти толк.

И по традиции сразу несколько ссылок:

Читаем, что там написано, формируем в голове общую концепцию, того, как происходит взаимодействие программиста и удаленного сервера.

Сами сервера можно приобрести на amazone. Ссылку не даю, ибо реклама, можете сами поискать, это не сложно. Есть бесплатный тестовый период. НО! Будьте предельно осторожны, ваш покорный слуга сам слышал истории, как со счетов списывались тысячи долларов без ведома хозяина, ибо система сама умеет докупать себе мощности. Не попадитесь, я сам уже платил несколько раз за непонятные услуги, там всё на английском. Если не уверены, что делаете — лучше вообще не делайте.

Порядок действий таков:

  1. Арендуете облако
  2. Подключаетесь по протоколу ssh
  3. Ставите нужные пакеты и настраиваете систему
  4. Собираете у себя war-пакет и деплоите его на сервер
  5. Решаете кучу ошибок и проблем

Сразу скажу, с первого раза это удалось единицам. Всегда есть что-то, что не хочет ставиться, запускаться или работать. Это нормально. Рано или поздно у вас будет красивый ip-шник вроде 74.125.224.72 и ваш сервер станет доступен в интернете. У меня ушло на это дело несколько месяцев, можно быстрее? Думаю да, попробуйте. Потом не забудьте купить себе красивый домен и передайте другу или знакомому ссылку. Если всё получилось — поздравляю, вы стали на один шаг ближе к тому, чтобы стать профессионалом.

На всякий случай я оставлю тут эти ссылки, вдруг, кто-то застопорился на каком-то моменте и решил спуститься в самый низ статьи, может помогут:

Заключение

Вот мы и добрались до кульминации нашего здесь обсуждения Джавы и веб-разработки на ней. Сложно? Да. Интересно? Да. Все, абсолютно все сервисы, будь то, поисковая система с миллиардами индексов, будь то видео-сервис с миллионами стрим-каналов — всё строиться по одному принципу. Отдать — забрать данные. Понимая эту концепцию вы сможете написать любую систему, сервис или платформу.

Я не стану лукавить и обманывать вас уважаемые читатели. Вряд ли вы за 2 или 3 недели станете супер профессионалами и будете свободно писать код. Этому можно научиться только потом и долгими ночами. Чем дальше вы будете залазить в дебри, тем больше вы будете понимать, что вы так мало знаете. Дорогу осилит идущий, вперед, дерзайте.

Вперед. Пришло время действовать. Стареющим Дурову и Брину пора уйти на покой, время их славы уже прошло, пришло время обновить учебники истории и списки Forbs. И кто знает, может эту статью читает тот, кто в своё время напишет отличнейшую платформу, которая затмит собой таких гигантов как Google, Facebook и других. Удачи, спасибо, что дочитали до конца.

Читать еще:  Java високосный год
Ссылка на основную публикацию
Adblock
detector