Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Чашечка Java — канал c материалами по Java со всего интернета. А значит и на русском языке, и на английском.

Обновления в версиях языка, инструменты, структуры данных, сложные конструкции языка, связанные с Java технологии и фреймворки – обо всём этом читайте в канале: @a_cup_of_java
Для чего используются атрибуты сервлетов и как происходит работа с ними?

Атрибуты сервлетов используются для внутренней коммуникации сервлетов.

В веб-приложении существует возможность работы с атрибутами используя методы setAttribute(), getAttribute(), removeAttribute(), getAttributeNames(), которые предоставлены интерфейсами ServletRequest, HttpSession и ServletContext (для областей видимости request, session, context соответственно).
Что выведет программа?
Anonymous Poll
30%
111
7%
81
27%
147
36%
Ошибка
Каким образом можно допустить в сервлете deadlock?

Можно получить блокировку, например, допустив циклические вызовы метода doPost() в методе doGet() и метода doGet() в методе doPost().
Как получить реальное расположение сервлета на сервере?

Реальный путь к расположению сервлета на сервере можно получить из объекта ServletContext:

getServletContext().getRealPath(request.getServletPath()).
Как получить информацию о сервере из сервлета?

Информацию о сервере можно получить из объекта ServletContext:

getServletContext().getServerInfo().
Как получить IP адрес клиента на сервере?

IP адрес клиента можно получить вызвав request.getRemoteAddr().
Какие классы-обертки для сервлетов вы знаете?

Собственные обработчики ServletRequest и ServletResponse можно реализовать, добавив новые или переопределив существующие методы у классов-обёрток ServletRequestWrapper (HttpServletRequestWrapper) и ServletResponseWrapper (HttpServletRequestWrapper).
В чем отличия GenericServlet и HttpServlet?


Абстрактный класс GenericServlet — независимая от используемого протокола реализация интерфейса Servlet, а абстрактный класс HttpServlet в свою очередь расширяет GenericServlet для протокола HTTP..
Почему HttpServlet класс объявлен как абстрактный?


Класс HTTPServlet предоставляет лишь общую реализацию сервлета для HTTP протокола. Реализация ключевых методов doGet() и doPost(), содержащих основную бизнес-логику перекладывается на разработчика и по умолчанию возвращает HTTP 405 Method Not Implemented error.
Хочешь начать карьеру в IT-компании и погрузиться в автоматизацию бизнес-процессов? Тогда регистрируйся на бесплатную Школу разработки от ЛАНИТ-Би Пи Эм.

Тебя ждут пять недель онлайн-погружения в IT с эпизодическим посещением московского офиса компании. Ты почувствуешь себя архитектором Pega и на собственном проекте изучишь актуальные для специальности инструменты, а также у тебя будет шанс получить предложение о работе в компании.
Приглашаются студенты старших курсов бакалавриата, магистранты и недавние выпускники технических специальностей с возможностью уделять программе от 35 часов в неделю из Москвы и МО. Также важен опыт написания SQL-запросов и разработки на любом из объектно-ориентированных языков программирования (Java, C#, C++, Python и т.д.).

Почему стоит участвовать:
— Карьера в IT: в случае успешного прохождения Школы ты сможешь вырасти до Team Lead’a или архитектора, бесплатно сертифицироваться по выбранному направлению, а также получишь предложение о переходе в штат с белой зарплатой, социальным пакетом и выплатой компенсации за участие в Школе.
— Знания для практики: тебя ждет личный учебный проект и прозрачный процесс обучения, а также фидбэк от тренеров в течение всей программы.
— Возможность совмещать работу и учебу: ты сам будешь распределять свое время и выбирать подход к обучению.
— Продуктивная среда для развития внутри компании: ты познакомишься с потенциальными коллегами и корпоративной культурой — рядом с тобой будут опытные разработчики и архитекторы, к которым можно прийти с любыми вопросами.

Успей зарегистрироваться до 31 декабря: https://clc.to/GK-zTw
Spring in Action, 6th Edition (MEAP)
Walls Craig (2021)

A new edition of the classic bestseller! Spring in Action, 6th Edition covers all of the new features of Spring 5.3 and Spring Boot 2.4 along with examples of reactive programming, Spring Security for REST Services, and bringing reactivity to your databases. You'll also find the latest Spring best practices, including Spring Boot for application setup and configuration.

About the Technology
Spring Framework makes life easier for Java developers. The latest version of Spring brings its productivity-focused approach to microservices, reactive development, and other modern application designs. With Spring Boot now fully integrated, you can start even complex projects with minimal configuration code. And in recent version of Spring, the new RSocket specification makes your application’s networking symmetrical—perfect for reactive design.

Скачать книгу
Какие основные методы присутствуют в классе HttpServlet?


doGet() - для обработки HTTP запросов GET;
doPost() - для обработки HTTP запросов POST;
doPut() - для обработки HTTP запросов PUT;
doDelete() - для обработки HTTP запросов DELETE;
doHead() - для обработки HTTP запросов HEAD;
doOptions() - для обработки HTTP запросов OPTIONS;
doTrace() - для обработки HTTP запросов TRACE.
Возможности Java — от Java 8 до Java 17

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

Мы рассмотрим большинство изменений в языке Java, которые произошли с Java 8 в 2014 году до сегодняшнего дня. Мы постараемся быть как можно более краткими по каждой функции. Намерение состоит в том, чтобы иметь ссылку на все новые фичи языка Java версий 8 - 17 включительно.

Rus https://habr.com/ru/post/593243/

Eng https://reflectoring.io/java-release-notes/
Стоит ли волноваться о многопоточной безопасности работая с сервлетами?

Методы init() и destroy() вызываются один раз за жизненный цикл сервлета — поэтому по поводу них беспокоиться не стоит.

Методы doGet(), doPost(), service() вызываются на каждый запрос клиента и т.к. сервлеты используют многопоточность, то здесь задумываться о потокобезопасной работе обязательно. При этом правила использования многопоточности остаются теми же: локальные переменные этих методов будут созданы отдельно для каждого потока, а при использовании глобальных разделяемых ресурсов необходимо использовать синхронизацию или другие приёмы многопоточного программирования.
Какой метод HTTP не является неизменяемым?

HTTP метод называется неизменяемым, если он на один и тот же запрос всегда возвращает одинаковый результат. HTTP методы GET, PUT, DELETE, HEAD и OPTIONS являются неизменяемыми, поэтому необходимо реализовывать приложение так, чтобы эти методы возвращали одинаковый результат постоянно. К изменяемым методам относится метод POST, который и используется для реализации чего-либо, что изменяется при каждом запросе.

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