Библиотека 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
Как из одного сервлета вызвать другой сервлет?

Для вызова сервлета из того же приложения необходимо использовать механизм внутренней коммуникации сервлетов (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
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.