Подтвердить что ты не робот

ServletConfig vs ServletContext

В чем разница между ServletConfig и ServletContext интерфейсом?

4b9b3361

Ответ 1

Параметры ServletConfig указаны для конкретного сервлета и неизвестны другим сервлетам. Используется для инициализации.

Параметры ServletContext указываются для всего приложения за пределами какого-либо конкретного сервлета и доступны всем сервлетам в этом приложении. Это область применения и, таким образом, глобально доступна на всех страницах.

Ответ 2

Источник: Разница между ServletConfig и ServletContext в Java

ServletConfig

  • ServletConfig доступен в пакете javax.servlet.*;

  • ServletConfig объект - один класс сервлета

  • Объект ServletConfig будет создан во время процесса инициализации сервлета

  • Этот объект Config является общедоступным только для определенного сервлета

  • Область действия: до тех пор, пока выполняется сервлет, объект ServletConfig будет доступен, он будет уничтожен после завершения выполнения сервлета.

  • Мы должны предоставить запрос явно, чтобы создать объект ServletConfig в первый раз

  • В теге web.xml - <init-param> будет отображаться тег <servlet-class>

Вот как это выглядит под web.xml: (Источник)

<servlet>
    <servlet-name>ServletConfigTest</servlet-name>
    <servlet-class>com.stackoverflow.ServletConfigTest</servlet-class>
    <init-param>
        <param-name>topic</param-name>
        <param-value>Difference between ServletConfig and ServletContext</param-value>
    </init-param>
</servlet>

ServletContext

  • ServletContext доступен в пакете javax.servlet.*;

  • ServletContext объект глобально для всего веб-приложения

  • Объект ServletContext будет создан во время развертывания веб-приложений

  • Область действия: до тех пор, пока выполняется веб-приложение, объект ServletContext будет доступен, и он будет уничтожен после удаления приложения с сервера.

  • ServletContext объект будет доступен даже до подачи первого запроса В теге web.xml - <context-param> будет отображаться тег <web-app>

Вот как это выглядит под web.xml:

<context-param>
    <param-name>globalVariable</param-name>
    <param-value>com.stackoverflow</param-value>
</context-param>

Итак, наконец....

Нет. веб-приложений = Множество объектов ServletContext [1 для каждого веб-приложения]
 Число классов сервлета = Множество объектов ServletConfig

Разница между ServletContext и ServletConfig в сервлетах JSP в табличном формате (Источник)

enter image description here

Ответ 3

ServletConfig реализуется контейнером сервлета для инициализации одного сервлета с помощью init(). То есть, вы можете пройти параметры инициализации сервлета с использованием развертывания web.xml дескриптор. Для понимания это похоже на конструктор в класс java.

ServletContext реализуется контейнером сервлета для всех сервлетов для связи с его контейнером сервлета, например получить MIME-тип файла, получить запросы на отправку или написать файл журнала. То есть, чтобы получить подробную информацию о своей среде исполнения. Это применим только в пределах одной виртуальной машины Java. Если веб-сайт приложение распределено между несколькими JVM, это не сработает. Для понимания это похоже на глобальную переменную приложения механизм для одного веб-приложения, развернутого только в одной JVM.

Источник: http://javapapers.com/servlet/difference-between-servletconfig-and-servletcontext/

Ответ 4

Это ответило в тексте их javadocs.

ServletConfig javadoc:

Объект конфигурации сервлета, используемый контейнером сервлета для передачи информации сервлету во время инициализации.

ServletContext javadoc:

Определяет набор методов, которые сервлет использует для связи с контейнером сервлета, например, для получения типа MIME файла, отправки запросов или записи в файл журнала.

Существует один контекст для каждого "веб-приложения" для каждой виртуальной машины Java. ( "Веб-приложение" представляет собой набор сервлетов и контента, установленных под определенным подмножеством пространства имен URL-адресов серверов, таких как /catalog и, возможно, установлен через .war файл.)

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

Объект ServletContext содержится внутри объекта ServletConfig, который веб-сервер предоставляет сервлет при инициализации сервлета.

Javadoc также содержит список доступных методов наряду с объяснением их использования. Он дает хороший обзор того, что все доступно/возможно с ними.

Ответ 5

enter image description here

Объекты ServletContext и ServletConfig на сервере

Как часть веб-сервера, существует множество веб-приложений, которые находятся внутри сервера. Для каждого веб-приложения сервер отвечает за создание одного объекта, т.е. объекта контекста сервлета. Это также упоминается как объект приложения.

ServletConfig Объект

В рамках каждого веб-приложения мы создадим N номеров сервлетов. Для каждого сервлета один объект будет создан сервером, то есть объект ServletConfig.

Ответ 6

Контейнер сервлета создаст два контекста сервлетов и Servlet Config. Контекст сервлета общедоступный, т.е. Данные, которые мы храним в контексте Сервл, используя webxml, доступны для всего сервлета, и в приложении есть только один объект контекста сервлета, тогда как в случае сервлета config, который является частным, т.е. данные, которые мы храним в контексте Servlet с помощью webxml, доступны только для определенного сервлета, и может быть n количество объектов конфигурации сервлета

Пример (если у нас есть 3 файла сервлета в приложении, будет 3 объекта конфигурации сервлета.

Ответ 7

ServletConfig предназначен для определенного сервлета и полезен в методе init (ServletConfig x) или может использоваться с использованием метода getServletConfig(). Он используется, если нам нужно получить некоторую информацию о сервлетах. Например: Servlet, возвращающий информацию о связанной с доступом к базе данных информации, может использовать ServletConfig, поскольку эта информация требуется только для этого конкретного сервлета

Однако ServletContext предназначен для всего приложения. Он используется, когда нам нужно обмениваться информацией между некоторыми/всеми сервлетами /jsp в определенном веб-приложении. Доступ к нему можно получить с помощью метода getServletConfig(). GetServletContext() для Servlet. Например: Servlet/JSP используется для подсчета количества пользователей, посещающих ваш сайт.

Ответ 8

enter image description here

Разница:

.--------------------------------------------------.----------------------------------------------------------------------------------------------.
|                  ServletConfig                   |                                        ServletContext                                        |
:--------------------------------------------------+----------------------------------------------------------------------------------------------:
| Unique object per servlet                        | Unique object for complete application                                                       |
:--------------------------------------------------+----------------------------------------------------------------------------------------------:
| Used to provide init parameters to the servlet   | Used to provide application level init parameters that all other servlets can use.           |
:--------------------------------------------------+----------------------------------------------------------------------------------------------:
| We cant set attributes in ServletConfig object. | We can set attributes in ServletContext that other servlets can use in their implementation. |
'--------------------------------------------------'----------------------------------------------------------------------------------------------'

Ответ 9

Как правило, оба используются для целей инициализации. Но одним из основных является предположим, что вы хотите использовать некоторую переменную или поля для всего приложения, вам нужно инициализировать время загрузки web.xml у вас есть один параметр ServletContext

И если вы хотите использовать некоторую переменную только в определенном сервлете, тогда вам нужно использовать ServletConfit.

Ответ 10

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

Ответ 11

Интерфейс

ServletContext представляет представление сервлетов веб-приложения, к которому он принадлежит. ServletContext присутствует в пределах ServeltConfig.

Каждый сервлет имеет объект ServletConfig, используемый для доступа к initParameters с использованием метода getServeletConfig().