Что такое «программные включения на стороне сервера»? - PullRequest
0 голосов
/ 09 января 2019

С учебник по Java EE :

Если ресурс статический, метод include включает программные включения на стороне сервера.

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

Я не совсем уверен, что они подразумевают под "программными включениями на стороне сервера" и как они отличаются от случая с веб-компонентом.

Я имею в виду, независимо от того, какой ресурс я включаю, я передаю ему кортеж объекта запроса / ответа и получаю некоторые побочные эффекты, которые я могу или не могу сообщить клиенту, верно?

Может, кто-нибудь уточнит это?

1 Ответ

0 голосов
/ 09 января 2019

Вы опустили заголовок и текст, предшествующий вашей цитате. Они обеспечивают важный контекст для комментариев, о которых вы спрашиваете:

Включение других ресурсов в ответ

Часто бывает полезно включить другой веб-ресурс, например, баннер содержание или информация об авторских правах, в ответе, возвращенном из Интернета составная часть. Чтобы включить другой ресурс, вызовите метод include объекта Объект RequestDispatcher:

include(request, response);

Таким образом, когда комментарии продолжаются с

Если ресурс статический, метод include включает программные включения на стороне сервера.

они характеризуют эффект предыдущего фрагмента кода, не привнося какой-либо новой концепции. «Программное включение на стороне сервера» в этом контексте означает , вызывая include() метод RequestDispatcher(), связанный со статическим ресурсом. В результате включается ресурс, связанный с диспетчером, встроенный в готовящийся ответ. Таким образом, это «серверная сторона», потому что все это выполняется сервером прозрачно для клиента, в отличие от того, что клиенту приходится делать отдельный запрос для включенного ресурса. *

Различие между случаями статического и веб-компонента заключается в ресурсе, связанном с RequestDispatcher, для которого вызывается метод include() - , т.е. , какой ресурс должен быть включен - не о компонент, код которого содержит вызов метода. Статический ресурс - это ресурс, который можно идентифицировать по URL-адресу, который не связан с веб-компонентом. Обычно это означает, что он соответствует файлу. Содержимое файла может быть любым, но обычно используется фрагмент HTML, такой как верхний или нижний колонтитул, общий для многих веб-страниц.

Я имею в виду, независимо от того, какой ресурс я включаю, я передаю запрос / ответ объект кортежа к нему и получить некоторые побочные эффекты, которые я может или не может общаться с клиентом, верно?

Более точно рассматривать его как передачу объекта запроса и ответа на RequestDispatcher. В случае, если диспетчер связан со статическим ресурсом, нет, объекты запроса и ответа не представлены этому ресурсу (самому себе), потому что у него нет механизма их получения или манипулирования ими. Вместо этого механизм сервлета, в котором выполняется код, манипулирует объектом ответа, когда он решает, что это уместно.

В случае, если целевой ресурс является веб-компонентом, да, он сможет считывать данные из предоставленного запроса, манипулировать запросом и его контекстом, а также манипулировать предоставленным ответом по своему усмотрению. Как правило, он не может отличить этот случай от того, в котором он доступен напрямую. Но нет, компонент, вызывающий include(), имеет в лучшем случае ограниченный контроль над тем, что сообщается клиенту через этот механизм.


* Для получения дополнительной информации об истории и вдохновляющей части «серверной части» см. Wikipedia .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...