developer tip

init-param 및 context-param

copycodes 2020. 10. 10. 10:11
반응형

init-param 및 context-param


<init-param><context-param>! 의 차이점은 무엇입니까 ?


<init-param><context-param>web.xml 파일에 저장됩니다 정적 매개 변수입니다. 자주 변경되지 않는 데이터가 있으면 그중 하나에 저장할 수 있습니다.

특정 서블릿 범위에 한정된 특정 데이터를 저장 하려면을 사용할 수 있습니다. <init-param>내부 선언 <init-param>은 해당 특정 서블릿에 대해서만 액세스 할 수 있습니다. init-param<servlet>태그 내부에 선언됩니다 .

<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>

다음과 같이 서블릿에서 해당 매개 변수에 액세스 할 수 있습니다.

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 또는 Servlet의 애플리케이션에서 사용

getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");

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에서 다음 정의를 고려하십시오.

 <web-app>
      <context-param>
           <param-name>myprop</param-name>
           <param-value>value</param-value>
      </context-param>
 </web-app>

이 컨텍스트 매개 변수는 웹 애플리케이션의 모든 부분에서 사용할 수 있으며 Context 객체에서 검색 할 수 있습니다. 예를 들어, getServletContext (). getInitParameter ( "dbname");

From a JSP you can access the context parameter using the application implicit object. For example, application.getAttribute(“dbname”);


<context-param> 
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:/META-INF/PersistenceContext.xml
    </param-value>
</context-param>

I have initialized my PersistenceContext.xml within <context-param> because all my servlets will be interacting with database in MVC framework.

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>

in the aforementioned code, I am configuring jersey and the ApplicationContext.xml only to rest layer. For the same I am using </init-param>


<init-param> will be used if you want to initialize some parameter for a particular servlet. When request come to servlet first its init method will be called then doGet/doPost whereas if you want to initialize some variable for whole application you will need to use <context-param> . Every servlet will have access to the context variable.


What is the difference between <init-param> and <context-param> !?

Single servlet versus multiple servlets.

Other Answers give details, but here is the summary:

A web app, that is, a “context”, is made up of one or more servlets.

  • <init-param> defines a value available to a single specific servlet within a context.
  • <context-param> defines a value available to all the servlets within a context.

참고URL : https://stackoverflow.com/questions/28392888/init-param-and-context-param

반응형