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

Пишем сервлет для слежки за пользователями соцсетей

Пишем сервлет для слежки за пользователями соцсетей

С момента появления языка программирования Java прошло уже почти двадцать лет. За это время Java пророчили смерть и забвение, программисты на сях смеялись над ее тормознутостью и жадностью к ресурсам. Но были и те, кто поверил в Java, они разрабатывали всевозможные библиотеки, развивали сообщество, упорно доказывали, что для Java нет пределов: realtime, embedded, ИИ — возможно все. Мы решили не оставаться в стороне и сделать в этой рубрике небольшой цикл статей по Java. Поехали!

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Дорогие начинающие Java-разработчики (и автор?), пользуясь случаем очень хочется сказать пару вещей. Во первых, не обращайте внимания на комментарии, некоторые люди легко забывают что сами когда-то продирались через дебри мутной и пугающей документации для сервлет контейнеров, чтобы понять что вообще там к чему. Во-вторых, не думайте сильно сервлетами и прочими низкоуровневыми абстракциями.

Первая реакция, которая возникает, когда пытаешься задеплоить Hello World в сервлет контейнер, даже следуя такому простому и понятному руководству, как в этой статье — это ужас. Особенно после простых, как бревно, Node.js, PHP, Python. И наверное возникает мысль «Зачем люди так делают?!». Так вот, в целом — не делают. Сейчас на уровне сервлетов пишут и мыслят только разработчики фреймворков, для обычных разработчиков знать и понимать их полезно, но возможно не в самую первую очередь.

Так вот, если вы смотрите на то, чтобы начать web-разработку на Java в 2017, я бы порекомендовал следующее:
1. Особо не погружайтесь в дебри JSP или сервлетов. Берите простой и понятный веб-фреймворк, типа Spark, Ninja, Jooby — там все очень удобно и понятно. Плюс современные и приличные движки для шаблонов, а не (кхм) JSP.

Читать еще:  Защитник Windows не работает или отключаетс?

Вот пример на Spark:

2. Не разбирайтесь (пока) в тонкостях сервлет-контейнеров и деплоя WAR, любой фреймворк даст embedded сервер, который запустится в командной строке

3. Даже не смотрите (пока) на сервера приложений и Java EE, там сразу слишком много новых концепций. Если хочется современного энтерпрайза — можно посмотреть на Spring, начиная с малого. Вопреки популярному заблуждению, он простой, легкий, и удобный для новичков — если брать Spring Boot.

Современная Java это все-таки не совсем ужас-ужас, вот эти все килобайты XML и JSP сейчас, к счастью, не нужны чтобы начать писать web-приложения.

Не соглашусь. По опыту моего обучения:

  • Считаю, что осваивать web, особенно новичкам, следует с сервлетов. Самое примитивное CRUD приложение на сервлетах. Разобраться не так сложно. А если таки сложно-приглашаю на свою практику по Java.
    Spark, Ninja, Jooby — это все круто, модно и удобно но не для начинающих. Если вы напишите в резюме что работали с этими фреймворками и не сможете ответить на элементарный вопрос про сервлет на собеседовании шансов, что вас возьмут будет 0.

Некоторые вообще рекомендуют начинать изучение Java без IDE (я к ним не отношусь).
Для новичков самое основное- понимать, КАК внути все это работает. Я собеседовал людей, которые изучали Spring без знания основ (а сервлеты это основы). Ужастно. Николай Алименков задает новичкам на собеседовании вопросы, поверх чего реализован Hibernate. Если вы не ответите, что JBDC и не будете иметь про него представление- кому нужен такой разработчик?

Про JSP — с 2005 года я поработал более чем на 10 проектах. В 60% использовался JSP. Почему? Да потому что встроено в Tomcat (42% по статистике 2016 г) и на нем выводят что-то достаточно примитивное. Остальное делается в основном на js фреймворках. И еще потому что в основном проекты уже N-летней давности. И в 90% смысла переписывать JSP на чтото другое никакого. Далее — если вы знаете JSP, то например освоить Thymleaf или любой другой шаблонизатор будет легче. А сам JSP достаточно простой.

Читать еще:  Долгожданный Redmi Note 9 Pro Max готовится к старту продаж

изучать Spring MVC можно только после того, как будете знать что такое сервлет. Тогда будет понятно что такое DispatcherServlet и паттерн Front Controller
Как можно работать со спринг не зная HttpServletRequest и прочие 5 основных классов сервлетов? Как вы будете его хотя бы дебажить?

  • НЕ беритесь за Spring-Boot, пока не освоили Spring. Точнее не так: все зависит от ваших задач. Если вам надо быстро написать небольшое работающее приложение- отличный выбор. Но если вы хотите стать Java разработчиком, пройти собеседование, устроится на работу и использовать Boot на больших проектах- не ваш вариант. Для вас это будет черный ящик, полный магии.
  • Те еще раз- джуниорам нужно учить именно основы и то, что требуется в вакансиях. Проверить легко: на hh в поиске работы по ключевым словам, ограничив область поиска разработкой ПО.

    Напоследок приведу цитату

    Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться.

    Шаг 6. Улучшаем сервлет и удаляем web.xml

    Согласитесь не совсем удобно регистрировать наш сервлет в web.xml, особенно если у нас будет не один-два сервлета, а 100+, тогда это будет неудобно 🙂 Но в этом есть и плюс, когда все сервлеты зарегистрированы в одном месте, а именно web. xml мы можем удобно их перемапить на другой URL.

    Я больше предпочитаю способ регистрации сервлетов, который опишу ниже.

    Для начало проаннотируем сервлет аннотацией @WebServlet:

    Данная аннотация регистрирует сервлет в контексте приложения, это тоже самое что мы делали в web.xml:

    Читать еще:  Вход в контакты моя страница быстро. Моя страница Вконтакте: как зайти в соц. сеть ВК без ввода пароля и что делать, если войти не получается. Как зарегистрироваться ВКонтакте бесплатно

    Аннотация принимает как параметр строку, именно эта строка соответствует тегу url-pattern, тоесть это URL по которому будет доступен сервлет.

    Вы возможно зададите вопрос, – Зачем тогда этот web.xml? В нашем случае он уже не надо, поэтому смело его удаляем вместе с папкой WEB-INF.

    Но если на этом этапе собрать проект и задеплоить, то он у нас не задеплоится, и будет ругаться на отсутствие web.xml. Для того чтобы это исправить идем в pom.xml и в maven-war-plugin добавляем свойство которое делает не обязательным web.xml:

    Именно этот Maven плагин отвечает за сборку war архива, который мы потом деплоим на сервер приложений.

    Конечная структура проекта выглядит так:

    Теперь пересобираем проект вызвав в Maven фазу Install и деплоим на сервер приложений. Напоминаю как это делать со студии Intellij IDEA можно глянуть тут. И мы получим тот же результат, но без лишних файлов и с аннотацией:

    На этом все, надеюсь данный туториал будет вам полезен. На вопросы отвечу в комментариях 🙂

    Также читайте серию статей «Spring Data JPA. Работа с БД»: часть 1, часть 2 и часть 3

    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector