System.out.println("Hello, World");

초기 파라미터

 - 서버단 컴포넌트(Servlet, JSP, Listener등)이 사용하는 문자열중 나중에 변경 될 수 있는 문자열을 web.xml에 등록해 놓고 컴포넌트에서는 호출하여 사용

 - 나중에 변경시 설정에서만 바꾸면 컴포넌트의 수정없이 변경 가능

 - 초기 파라미터 2가지

* 특정 서블릿 JSP만 사용할 수 있는 초기 파라미터

 - ServletConfig 사용

* Application내 모든 Servlet이 사용할 수 있는 초기 파라미터 - ServletContext 이용


 * javax.servlet.ServletConfig

 - Servlet 객체가 일하는데 필요한 정보를 가지고 있는 객체

 - WebContainer가 생성하여 Servlet()의 init() 호출시 중집

 - Servlet 객체당 하나씩 생성


*ServletConfig를 이용한 초기 파라미터 처리

1. Web.xml에 초기 파라미터 설정

<servlet>

<servlet-name>서블릿 객체 이름</servlet-name>

<servlet-class>서블릿 클래스 이름</servlet-class>

<init-param>

<param-name>초기파라미터 이름</param-name>

<param-value>초기 파라미터 값</param-value>

</init-param>

</servlet>

-초기 파라미터가 여러개인 경우 <init-param>을 반복

ex)

2. 코드상에서 조회

ServletConfig 객체.getInitParameter(String paramName) : String paramValue

주석처리한것처럼 해도 되지만 2줄을 써서 할바에야 한줄로 간단히 하는게 더 빠르다.


ex)예제 만들기

1. greeting_form.html을 다음과 같이 만들어주고 서버를 올려서 결과처럼 나오는지 확인한다.


2. 그리고 web.xml에서 초기파라미터를 설정해줘야 하니 다음과 같이 작성한다.


3. web.xml도 설정해줬으니 여기서 파라미터를 받는 GreetingServlet를 설정한다.



4. greeting_form.html에서 이름 텍스트 박스에서 이름을 작성한후 영어 전송을 했을떄 다음과 같이 나오면 성공적으로 한 것이다.


5. 이번에는 web.xml에서 서블릿을 한개 더 만들어서 서블릿을 2개 이용해보겠다. web.xml에 다음과 같이 더 추가한다.


6. 이제 greeting_form.html에서 밑에 있는 한글전송을 눌러봐서 다음과 같이 나오나 확인한다. 




*javax.servlet.ServletContext

-web Application이 자체 또는 일하는데 필요한 정보를 가지고 있는 객체

-web Component는 Web Application과 관련된 정보를 조회하거나 업무를 처리할 때 ServletContext type객체를 이용

-web Applictaion이 시작할 때 Web container에 의해 생성된다.

-Servlet의 getServletContext()를 통해 조회

-ServletContext ctx - getServletContext();

-web Application 당 하나가 생성됨


*ServletContext를 이용한 초기 파라미터 처리

1. web.xml에 초기 파라미터 설정

<web-app>

<context-param>

<param-name>초기파라미터이름</param-name>

<param-value>초기파라미터 값</param-value>

</context-param>


2. 코드상에서 조회

ServletContext객체.getInitParameter(String paramName) : String paramValue


ex)만들어 보기

1. web.xml에 파라미터를 설정한다.



2. ContextParamServlet 작성


3. 서버를 재가동하여 http://127.0.0.1:8088/myweb/ContextParamServlet 이 제대로 나오는지 확인한다.


○ javax.servlet.ServletConfig vs javax.servlet.ServletContext

확인한다ServletConfig는 서블릿당 하나니며, ServletContext는 웹 어플리케이션 당 하나이다. 

웹 어플리케이션은 오직 하나의 ServletContext으로 전체 웹 어플리케이션에서 정보를 공유한다. 그러나 웹 어플리케이션 안에 있는 서블릿은 자신만의 ServletConfig를 가진다. 컨테이너는 웹 어플리케이션이 배포되는 시점에 ServletContext를 생성하며, 서블릿이나 JSP(서블릿의 일종)에서 이용 가능하도록 한다. 


 - 동일 웹 어플리케이션에서 컨테스트 초기화 파라미터 이름과 서블릿 초기화 파라미터 이름이 같아도 상관없는 이유는 ServletContext와 ServletConfig는 서로 다른 객체며, 

   동일한 이름을 사용하더라도, 서로 다른 이름공간을 사용하기에 충돌이 일어나지 않는다.


Posted by 김마농