<init-param>Ve <context-param>! Arasındaki fark nedir ?
Yanıtlar:
<init-param>ve <context-param>web.xml dosyasında saklanan statik parametrelerdir. Sık sık değişmeyen verileriniz varsa, bunlardan birinde saklayabilirsiniz.
Belirli bir sunucu uygulaması kapsamı ile sınırlı belirli verileri depolamak istiyorsanız , o zaman kullanabilirsiniz. <init-param>İçinde bildirdiğiniz her şeye <init-param>yalnızca o belirli sunucu uygulaması için erişilebilir. İnit -parametresi<servlet> etiketin içinde bildirilir .
<servlet>
<display-name>HelloWorldServlet</display-name>
<servlet-name>HelloWorldServlet</servlet-name>
<init-param>
<param-name>Greetings</param-name>
<param-value>Hello</param-value>
</init-param>
</servlet>
ve bu parametrelere sunucu uygulamasında aşağıdaki şekilde erişebilirsiniz:
out.println(getInitParameter("Greetings"));
Tüm uygulama için ortak olan verileri depolamak istiyorsanız ve sık sık değişmiyorsa , uygulama bağlamı yöntemi <context-param>yerine kullanabilirsiniz servletContext.setAttribute(). Kullanımı ile ilgili daha fazla bilgi için <context-param>VS ServletContext.setAttribute()bu bir göz soru . context-param etiketi altında bildirilir web-app. Sen beyan ve erişebilir <context-param>şöyle
<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 veya Servlet'te uygulamada kullanım
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
<init-param>: ServletContext::setInitParameter(String name, String value)ancak bağlam parametresi ayarlamak için bir yöntem bulamıyorum <context-param>.
Web.xml'deki aşağıdaki tanımı düşünün
<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>
İnit-param'in bir servlet öğesi içinde tanımlandığını görebilirsiniz. Bu, web uygulamasının diğer bölümlerinde değil, yalnızca beyan kapsamında sunucu uygulaması için kullanılabilir olduğu anlamına gelir. Bu parametrenin uygulamanın diğer bölümlerinde kullanılabilmesini istiyorsanız, bunun JSP'ye açıkça iletilmesi gerektiğini söyleyin. Örneğin request.setAttribute () olarak geçti. Bu oldukça verimsizdir ve kodlanması zordur.
Bu nedenle, uygulama içinde herhangi bir yerden, bu değerleri açıkça iletmeden global değerlere erişmek istiyorsanız, Bağlam Başlatma parametrelerini kullanmanız gerekir.
Web.xml'deki aşağıdaki tanımı göz önünde bulundurun
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
Bu bağlam parametresi, web uygulamasının tüm bölümlerinde mevcuttur ve İçerik nesnesinden alınabilir. Örneğin, getServletContext (). GetInitParameter (“dbname”);
Bir JSP'den uygulama örtük nesnesini kullanarak bağlam parametresine erişebilirsiniz. Örneğin, application.getAttribute ("dbname");
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/PersistenceContext.xml
</param-value>
</context-param>
Kızkardeşimi başlatıldı gelmiş PersistenceContext.xmlolan <context-param>tüm servlet'ler MVC çerçevesinde veritabanı ile etkileşim olacaktır çünkü.
Howerver,
<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>
Yukarıda belirtilen kodda, jarse ve ApplicationContext.xmldinlenmek için tek katman yapılandırıyorum . Ben de aynısı için kullanıyorum</init-param>
<init-param>belirli bir sunucu uygulaması için bazı parametreleri başlatmak istiyorsanız kullanılacaktır. İstek sunucu uygulamasına geldiğinde, ilk önce inityöntemi çağrılacaktır, doGet/doPostoysa tüm uygulama için bazı değişkenleri başlatmak istiyorsanız kullanmanız gerekecektir <context-param>. Her sunucu uygulamasının bağlam değişkenine erişimi olacaktır.
<init-param>Ve<context-param>! Arasındaki fark nedir ?
Tek sunucu uygulaması karşısındaBirden çok sunucu uygulamasına uygulaması.
Diğer Cevaplar ayrıntı verir, ancak işte özet:
Bir web uygulaması, yani bir "bağlam", bir veya daha fazla sunucu uygulamasından oluşur .
<init-param>bir bağlam içindeki belirli tek bir sunucu uygulamasında kullanılabilen bir değeri tanımlar .<context-param>bir bağlam içindeki tüm sunucu uygulamalarının kullanabileceği bir değeri tanımlar .