Библиотека 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
Spring. Все паттерны проектирования
Раджпут Динеш (2019)

В этой книге дается обзор фреймворка Spring 5 и паттернов проектирования для него. Объясняется принцип внедрения зависимостей (dependency injection), играющий ключевую роль при создании слабосвязанного кода во фреймворке Spring. Затем рассматриваются классические паттерны «Банды четырех» при проектировании приложений на Spring. В следующих частях книги автор рассматривает паттерны аспектно-ориентированного программирования (AOP), шаблоны JDBC, позволяющие абстрагировать доступ к базе данных. В заключительных главах книги автор исследует работу с MVC, реактивные шаблоны проектирования и паттерны проектирования, применяемые при конкурентном и параллельном программировании в Spring

Скачать книгу
Как из одного сервлета вызвать другой сервлет?

Для вызова сервлета из того же приложения необходимо использовать механизм внутренней коммуникации сервлетов (inter-servlet communication mechanisms) через вызовы методов RequestDispatcher:

forward() - передаёт выполнение запроса в другой сервлет;
include() - предоставляет возможность включить результат работы другого сервлета в возвращаемый ответ.
Если необходимо вызывать сервлет принадлежащий другому приложению, то использовать RequestDispatcher уже не получится, т.к. он определен только для текущего приложения. Для подобных целей необходимо использовать метод ServletResponse - sendRedirect() которому предоставляется полный URL другого сервлета. Для передачи данных между сервлетами можно использовать cookies.
👍1
Чем отличается sendRedirect() от forward()?

forward():

Выполняется на стороне сервера;
Запрос перенаправляется на другой ресурс в пределах того же сервера;
Не зависит от протокола клиентского запроса, так как обеспечивается контейнером сервлетов;
Нельзя применять для внедрения сервлета в другой контекст;
Клиент не знает о фактически обрабатываемом ресурсе и URL в строке остается прежним;
Выполняется быстрее метода sendRedirect();
Определён в интерфейсе RequestDispatcher.

sendRedirect():

Выполняется на стороне клиента;
Клиенту возвращается ответ 302 (redirect) и запрос перенаправляется на другой сервер;
Может использоваться только с клиентами HTTP;
Разрешается применять для внедрения сервлета в другой контекст;
URL адрес изменяется на адрес нового ресурса;
Медленнее forward() т.к. требует создания нового запроса;
Определён в интерфейсе HttpServletResponse.
👍1
Собеседование Backend-Java-разработчика: вопросы и где искать ответы.

Часть 1
Часть 2
👍1
Пример бессерверного приложения, написанного на Java, скомпилированного с помощью собственного образа GraalVM

https://github.com/aws-samples/serverless-graalvm-demo
Чашечка 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