ServletConfig против ServletContext - PullRequest
       74

ServletConfig против ServletContext

51 голосов
/ 19 ноября 2010

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

Ответы [ 11 ]

49 голосов
/ 19 ноября 2010

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

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

43 голосов
/ 08 мая 2014

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

ServletConfig

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

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

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

  • Этот объект конфигурации доступен только для определенного сервлета

  • Область действия: пока выполняется сервлет, объект 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> tag

Вот как это выглядит в 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

18 голосов
/ 05 февраля 2013

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

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

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

4 голосов
/ 19 ноября 2010

Это ответ на вступительный текст их Javadocs.

ServletConfig Javadoc:

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

ServletContext Javadoc:

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

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

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

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

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

3 голосов
/ 05 февраля 2016

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

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

3 голосов
/ 16 февраля 2012

enter image description here

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

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

Объект ServletConfig

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

2 голосов
/ 18 июля 2018

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 can’t set attributes in ServletConfig object. | We can set attributes in ServletContext that other servlets can use in their implementation. |
'--------------------------------------------------'----------------------------------------------------------------------------------------------'
2 голосов
/ 10 августа 2013

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

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

0 голосов
/ 30 марта 2016

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

0 голосов
/ 01 января 2014

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

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

...