Статьи

Что такое javax.ws.rs.core.context?

Как использовать аннотацию @Context

В части 3 раздела Что такое javax.ws.rs.core.context? Вы узнали, как использовать аннотацию @Context с экземплярами запросов и конфигурации, поставщиками и приложениями .

В этой статье вы узнаете об использовании аннотации @Context для внедрения классов HttpServletResponse и HttpServletRequest .

Получить доступ к свойствам HttpServletRequest

JAX-RS API работает поверх сервлетов, поэтому экземпляры объектов сервлетов доступны для ресурса JAX-RS. Аннотация @Context используется для внедрения экземпляра HttpServletRequest для текущего запроса. Его методы дают доступ к подробной информации о запросе.

Давайте рассмотрим простой пример, который возвращает удаленный адрес запроса.

01
02
03
04
05
06
07
08
09
10
11
@Path("/remote-address")
public class HttpServletRequestResource {
 
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getRemoteAddress(
                 final @Context HttpServletRequest httpServletRequest){
        return Response.ok(httpServletRequest.getRemoteAddr()).build();
    }
 
}

В этом примере кода объект запроса Servlet внедряется в параметр метода httpServletRequest с помощью аннотации @Context . Метод getRemoteAddr () вызывается и возвращает IP-адрес сервера, который сделал запрос.

Если вы запускаете этот пример на локальном компьютере, ответ на вызов URL http: // localhost: 8080 / rest-server / remote-address будет 127.0.0.1.

Получить доступ к свойствам HttpServletResponse

Так же, как вы можете получить экземпляр объекта HttpServletRequest, вы также можете получить экземпляр HttpServletResponse и вызвать его методы и установить значения в экземпляре ответа.

Давайте посмотрим на пример, который получает ServletOutputStream и сбрасывает сообщение в ответ.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
@Path("/output")
public class HttpServletResponseResource {
 
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response get(
                 final @Context HttpServletResponse httpServletResponse)
                 throws IOException {
 
        ServletOutputStream out = httpServletResponse.getOutputStream();
        out.print("Hello");
        out.flush();
 
        return Response.ok().build();
    }
}

В этом примере экземпляр объекта HttpServletResponse внедряется в параметр метода httpServletResponse, а затем получается экземпляр объекта ServletOutputStream. Затем я использую этот объект для записи сообщения в выходной поток, а затем сбрасываю его в ответ.

Если вы посетите URL http: // localhost: 8080 / rest-server / output, вы увидите сообщение «Hello», напечатанное на экране.

Репозиторий кода

Исходный код этой и всех моих статей находится в репозитории readlearncode_articles Github.

Что дальше?

Это все для части 4, в части 5 Что такое javax.ws.rs.core.context? вы узнаете, как использовать аннотацию @Context для внедрения экземпляров javax.servlet. ServletConfig и javax.servlet. ServletContext .

Видеокурс по Java EE

Если вы только начинаете и плохо знакомы с Java EE, может быть довольно сложно разобраться во всех API. Именно поэтому я создал видео-курс Learning Java Enterprise Edition . На этом двухчасовом курсе вы познакомитесь со всеми наиболее важными API Java EE. С большим количеством примеров кода и демонстраций того, как разрабатывать с помощью Java EE, вы скоро станете разработчиком Java EE.

После вводного курса вы захотите углубиться в каждый API. Для этого также есть курсы. Вы можете усовершенствовать свои знания Java EE, узнав, как создавать конечные точки RESTful с помощью API JAX-RS , затем вы можете научиться разрабатывать приложение для чата с API WebSocket, а затем освоить JSON с помощью курса API JSON-Processing . Еще много курсов по дорожной карте, так почему бы не начать сейчас и дать толчок своей карьере Java EE.

Дальнейшее чтение

Недавно я опубликовал мини-серию блогов, посвященных JAX-RS . Они опубликованы на readlearncode.com и обсуждают, как управлять ошибками проверки bean-компонентов , работать с Потребителями и Производителями , а также как создавать Ресурсные объекты JAX-RS .

Ссылка: Что такое javax.ws.rs.core.context? [Часть 4] от нашего партнера JCG Алекса Тидома из блога Read Learn Code .