<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");
<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에서 다음 정의를 고려하십시오.
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
이 컨텍스트 매개 변수는 웹 애플리케이션의 모든 부분에서 사용할 수 있으며 Context 객체에서 검색 할 수 있습니다. 예를 들어, getServletContext (). getInitParameter ( "dbname");
JSP에서 애플리케이션 암시 적 객체를 사용하여 컨텍스트 매개 변수에 액세스 할 수 있습니다. 예를 들어, application.getAttribute ( "dbname");
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/PersistenceContext.xml
</param-value>
</context-param>
모든 서블릿이 MVC 프레임 워크의 데이터베이스와 상호 작용할 것이기 때문에 내 PersistenceContext.xml
내부를 초기화했습니다 <context-param>
.
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>
앞서 언급 한 코드에서 저는 저지와 ApplicationContext.xml
유일한 휴식 레이어를 구성하고 있습니다. 같은 것을 사용하고 있습니다.</init-param>