@RC. В этом вопросе не обсуждается разница между этими двумя параметрами .. Речь идет только о свойствах, загруженных в двух контекстах ..
Рохит Джайн,
Я остановился на названии, мое плохое.
Ответы:
120
<init-param>и <context-param>являются статическими параметрами, которые хранятся в файле web.xml. Если у вас есть данные, которые не меняются часто, вы можете сохранить их в одном из них.
Если вы хотите сохранить определенные данные, которые ограничены определенной областью действия сервлета , вы можете использовать. <init-param>Все, что вы объявляете внутри, <init-param>доступно только для этого конкретного сервлета. Init -param объявляется внутри <servlet>тега.
и вы можете получить доступ к этим параметрам в сервлете следующим образом:
out.println(getInitParameter("Greetings"));
Если вы хотите хранить данные, общие для всего приложения, и если они не меняются часто, вы можете использовать <context-param>вместо servletContext.setAttribute()метода контекста приложения. Для получения дополнительной информации об использовании <context-param>VS см. ServletContext.setAttribute()Этот вопрос . context-param объявлены под тегом web-app. Вы можете объявить и получить доступ к <context-param>следующему
Вы можете видеть, что init-param определен внутри элемента сервлета. Это означает, что он доступен только сервлету под объявлением, а не другим частям веб-приложения. Если вы хотите, чтобы этот параметр был доступен другим частям приложения, скажем, JSP, это необходимо явно передать JSP. Например, передается как request.setAttribute (). Это очень неэффективно и сложно кодировать.
Поэтому, если вы хотите получить доступ к глобальным значениям из любого места в приложении без явной передачи этих значений, вам необходимо использовать параметры Context Init.
Этот параметр контекста доступен для всех частей веб-приложения и может быть получен из объекта Context. Например, getServletContext (). GetInitParameter («dbname»);
Из JSP вы можете получить доступ к параметру контекста, используя неявный объект приложения. Например, application.getAttribute («dbname»);
<init-param>будет использоваться, если вы хотите инициализировать какой-либо параметр для определенного сервлета. Когда запрос сначала поступает на сервлет, его initметод будет вызван, тогда doGet/doPostкак если вы хотите инициализировать некоторую переменную для всего приложения, вам нужно будет использовать <context-param>. Каждый сервлет будет иметь доступ к переменной контекста.
Ответы:
<init-param>
и<context-param>
являются статическими параметрами, которые хранятся в файле web.xml. Если у вас есть данные, которые не меняются часто, вы можете сохранить их в одном из них.Если вы хотите сохранить определенные данные, которые ограничены определенной областью действия сервлета , вы можете использовать.
<init-param>
Все, что вы объявляете внутри,<init-param>
доступно только для этого конкретного сервлета. Init -param объявляется внутри<servlet>
тега.и вы можете получить доступ к этим параметрам в сервлете следующим образом:
out.println(getInitParameter("Greetings"));
Если вы хотите хранить данные, общие для всего приложения, и если они не меняются часто, вы можете использовать
<context-param>
вместоservletContext.setAttribute()
метода контекста приложения. Для получения дополнительной информации об использовании<context-param>
VS см.ServletContext.setAttribute()
Этот вопрос . context-param объявлены под тегомweb-app
. Вы можете объявить и получить доступ к<context-param>
следующему<web-app> <context-param> <param-name>Country</param-name> <param-value>India</param-value> </context-param> <context-param> <param-name>Age</param-name> <param-value>24</param-value> </context-param> </web-app>
Использование в приложении в JSP или сервлете
getServletContext().getInitParameter("Country"); getServletContext().getInitParameter("Age");
источник
<init-param>
:ServletContext::setInitParameter(String name, String value)
но не для установки параметра контекста<context-param>
.Рассмотрим приведенное ниже определение в web.xml.
<servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>TestServlet</servlet-class> <init-param> <param-name>myprop</param-name> <param-value>value</param-value> </init-param> </servlet>
Вы можете видеть, что init-param определен внутри элемента сервлета. Это означает, что он доступен только сервлету под объявлением, а не другим частям веб-приложения. Если вы хотите, чтобы этот параметр был доступен другим частям приложения, скажем, JSP, это необходимо явно передать JSP. Например, передается как request.setAttribute (). Это очень неэффективно и сложно кодировать.
Поэтому, если вы хотите получить доступ к глобальным значениям из любого места в приложении без явной передачи этих значений, вам необходимо использовать параметры Context Init.
Рассмотрим следующее определение в web.xml
Этот параметр контекста доступен для всех частей веб-приложения и может быть получен из объекта Context. Например, getServletContext (). GetInitParameter («dbname»);
Из JSP вы можете получить доступ к параметру контекста, используя неявный объект приложения. Например, application.getAttribute («dbname»);
источник
Я инициализировал свой
PersistenceContext.xml
внутри,<context-param>
потому что все мои сервлеты будут взаимодействовать с базой данных в среде MVC.Хауэрвер,
<servlet> <servlet-name>jersey-servlet</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:ApplicationContext.xml </param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.organisation.project.rest</param-value> </init-param> </servlet>
в вышеупомянутом коде я настраиваю трикотаж и
ApplicationContext.xml
единственный слой для отдыха. Для того же я использую</init-param>
источник
<init-param>
будет использоваться, если вы хотите инициализировать какой-либо параметр для определенного сервлета. Когда запрос сначала поступает на сервлет, егоinit
метод будет вызван, тогдаdoGet/doPost
как если вы хотите инициализировать некоторую переменную для всего приложения, вам нужно будет использовать<context-param>
. Каждый сервлет будет иметь доступ к переменной контекста.источник
Один сервлет против нескольких сервлетов.
Другие ответы содержат подробности, но вот краткое изложение:
Веб-приложение, то есть «контекст», состоит из одного или нескольких сервлетов .
<init-param>
определяет значение, доступное отдельному сервлету в контексте.<context-param>
определяет значение, доступное для всех сервлетов в контексте.источник