본문 바로가기

Programming/JAVA

서블릿 패키지 설정 및 기타

모든 프로그래밍이의 시작이 hello world의 출력이듯이, 서블릿 프로그래밍에서도 hello servlet을 출력하도록 해보자.

1. 서블릿 패키지


   - 서블릿은 두 개의 패키지로 구성되어 있다.


      1) javax.servlet : 일반 서비스를 위한 서블릿 패키지

      2) javax.serrvlet.http : HTTP 서비스를 위한 패키지


C:\Program Files\Java\jdk1.6.0_01\jre\lib\ext

위의 경로에 복사해보자.

2. java 코드 작성


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class HelloServlet extends HttpServlet
{
 public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
 {
  res.setContentType("text/html;charset=KSC5601");
  PrintWriter out = res.getWriter();


  out.println("<html>");
  out.println("<head><title>Hello Servlet</title></head>");
  out.println("<body>");
  out.println("hello servlet..");
  out.println("</body>");
  out.println("</html>");
  out.close();
 }
}


   1) import java.servlet.*;

       import java.servlet.http.*;


       -> 서블릿 패키지들을 import한다.


   2) public class HelloServlet extends HttpServlet


       -> 서블릿 클래스는 주로 HttpServlet로부터 상속받아 작성을 하고, 항상 public class로 선언해야한다.


   3)  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException


       -> 클라이언트의 GET 요청을 처리하기 위해서는 doGet() 함수를 작성한다. doGet() 함수는 추상 클래스로부터 상속을 받기 때문에 항상 HttpServletRequest, HttpServletResponse 타입의 매개변수를 갖는다. 또한 이 함수는 예외가 발생할 수 있기 때문에 throws 문장을 써준다.


   4) res.setContentType("text/html;charset=KSC5601");


       -> HttpServletResponse 클래스의 setContentType() 함수를 이용해서 MIME 타입을 기술한다. 또한 한글 문자 인코딩을 사용하기 위해서 charset을 KSC5601로 지정한다.


   5) PrintWriter out = res.getWriter();


       -> 클라이언트에 내용을 전송하기 위해서 PrintWriter를 생성한다. 이 PrintWriter를 통해서 쓰인 내용들은 클라이언트의 웹 브라우저로 전송된다.


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


       -> PrintWriter의 println() 함수를 이용해서 클라이언트에 보일 HTML 문서를 작성한다.


3. 컴파일과 class 파일의 위치


    java 소스 파일 작성을 마쳤다면, 소스 파일을 컴파일한다. 컴파일을 하면 HelloServlet.class 파일이 생성이 된다.

    이 HelloServlet.class 파일을 웹 컨테이너로 복사한다. 복사할 위치는 <TOMCAT>/ROOT/WEB-INF/classes이다.


4. web.xml 설정하기


    1) <TOMCAT>/ROOT/WEB-INF/web.xml 파일을 다음과 같이 설정


중략...

<!-- JSPC servlet mappings start -->
<!--
    <servlet>
        <servlet-name>org.apache.jsp.index_jsp</servlet-name>
        <servlet-class>org.apache.jsp.index_jsp</servlet-class>
    </servlet>
-->
 <servlet>
  <servlet-name>invoker</servlet-name>
  <servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class>
 </servlet>

 
<!--
    <servlet-mapping>
        <servlet-name>org.apache.jsp.index_jsp</servlet-name>
        <url-pattern>/index.jsp</url-pattern>
    </servlet-mapping>
-->

 <servlet-mapping>
  <servlet-name>invoker</servlet-name>
  <url-pattern>/servlet/*</url-pattern>
 </servlet-mapping>

<!-- JSPC servlet mappings end -->

중략...


      예에서 굵고 빨간 글씨가 web.xml 파일에 추가할 내용들이다.


      주석으로 막은 부분은 http://localhost:8080/ 사이트의 첫 화면을 위해 기술한 것이다.   


      만약 첫 화면을 다른 것으로 변경할 필요가 있는 경우에는 예에서처럼 주석을 사용해서 막고, <TOMCAT>/webapps/ROOT 디렉터리에 있는 index.html 혹은 index.jsp 파일을 만든다.



   2) web.xml 파일을 변경하였다면 자카르타 톰캣을 restart한다.


   3) 웹 브라우저를 이용해서 http://localhost:8080/servlet/HelloServlet 사이트를 방문한다.