본문 바로가기

Developer/Java-was

#008. ServletConfig 와 ServletContext 알아보기...

#008. ServletConfig 와 ServletContext 알아보기...

 

1. ServletConfig 와 ServletContext 비교 해보기...

ServletConfig

하나의 Servlet 에서 사용 한다. (config 객체 라고도 함)

- getxxx() 메서드만 지원이 되므로, Read-Only 가 되겠다.

ServletContext

하나의 Context 에서 여러 파일간 자원을 공유해서 사용 한다. (application 객체 라고도 함) 즉, 공유자원 의 의미를 갖는다.

- getxxx(), setxxx() 메서드가 지원이 되므로, Read-Write 가 가능하다.

web.xml

#003 강좌에서 1-1)번에 D.D 에 대한 설명이 있었다.

Deployment Descriptor File (배치기술자. D.D File 이라고도 함. )

위 ServletConfig 와 ServletContext 의 키, 값 을 web.xml 에 배치 한다.

 

2. Java-Api 문서를 통해 알아보자. ( http://download.oracle.com/javaee/6/api/ )

1) Interface ServletConfig - getxxx() 메서드만 지원

 

2) Interface ServletContext - getxxx(), setxxx() 메서드 모두 지원

 

3. 실습을 통해서 알아보자. (환경파일 web.xml , 소스코드 HelloServlet.java , 웹 브라우저 확인)

1) web.xml 환경파일에 키, 값 으로 배치를 해보자.

코드

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

 

    <!-- ServerContext -->

    <context-param>

        <param-name>company</param-name>

        <param-value>(주)동혁엔터테이먼트</param-value>

    </context-param>

 

    <servlet>

        <servlet-name>kyumboy</servlet-name>

        <servlet-class>hello.HelloServlet</servlet-class>

        <!-- ServletConfig -->

        <init-param>

            <param-name>tel</param-name>

            <param-value>02-1234-5678</param-value>

        </init-param>

    </servlet>

    

    <servlet-mapping>

        <servlet-name>kyumboy</servlet-name>

        <url-pattern>/hello.dh</url-pattern>

    </servlet-mapping>

</web-app>

설명

1. ServletContext 는 문장4~9 의 위치에 배치하며, <context-param> 태그안에 company 키에 (주)동혁엔터테이먼트 값을 지정했다. 또 다른 키, 값을 지정하려면, 문장5~8 을 바로 아래에 똑같이 추가하면 되겠다.

2. ServletConfig 의 위치는 Kyumboy hello.HelloServlet 안에 포함돼야 하며, <init-param> 태그안에 키, 값을 지정한다. 또 다른 키, 값을 지정하려면, 문장14~17 을 바로 아래에 똑같이 추가 하면 되겠다.

 

2) HelloServlet Class 에 키에 대한 값을 가져오고, 출력하는 기능을 구현하자.

코드

....... 상단 부 생략 ......

        String msg = req.getParameter("msg");

        String pwd = req.getParameter("pwd");

        

        // ServletContext 객체 생성 / 값 추출

        ServletContext context = this.getServletContext();

        String company = context.getInitParameter("company");

        

        // ServletConfig 객체 생성 / 값 추출

        ServletConfig config = this.getServletConfig();

        String tel = config.getInitParameter("tel");

        

        // 클라이언트의 웹브라우저에 전송해줄 컨텐츠의 타입을 지정한다.

        resp.setContentType("text/html;charset=euc-kr");

....... 중간 부 생략 ......

        out.println("<p><b> param pwd: </b>" + pwd + "</P>");

        out.println("<p><b> Context company: </b>" + company + "</P>");

        out.println("<p><b> Config tel: </b>" + tel + "</P>");

        out.println("</body>");

        out.println("</html>");

....... 하단 부 생략 ......

설명

코드가 너무 길어 필요한 부분만 위에다가 서술 했다.

문장61: this.getServeltContext() 메서드를 통해 Interface ServletContext 의 context 객체를 생성했다.

문장62: getInitParameter() 메서드를 통해 web.xml에 서술한 키의 값을 문자열로 가져온다.

문장65: this.getServeltConfig() 메서드를 통해 Interface ServletConfig 의 config 객체를 생성했다.

문장66: getInitParameter() 메서드를 통해 web.xml에 서술한 키의 값을 문자열로 가져온다.

문장81~82: 값을 가져왔는지 출력을 통해 확인 한다.

 

3) 웹 브라우저로 확인 해보자.

http://localhost:8080/web/hello.html 값 입력 후 전송..

설명

Web.xml 에 서술한 값이 출력되는 것을 확인 할 수 있다.

 

지금까지 was / java servlet 에 대해서 알아 봤습니다.

모두 고생하셨습니다. (^^") 짝짝짝....^^