본문 바로가기

Developer Diary/자바

웹 응용프로그램 환경 설정을 해 보자

자바 J2SDK를 다운로드(http://java.sun.com) 받고,
환경변수를 설정해 준다.
우선, PATH(/bin), JAVA_PATH(/), CLASSPATH(설정 안 하는 것이 좋음)

그 다음, 자카르타 톰캣(http://www.apache.org/)을 설치한다. OS 구분해서 다운로드 받자.
참고로, 톰캣 5.x 이전 버전에서는 서블릿과 JSP의 기능들을 100% 활용할 수 없다. 유념할 것.

설치 도중에 포트는 8080을 선택. 설치 후 http://localhost:8080/ 에 방문하여 톰캣 첫 화면을 감상하자.
참고로, 8080 포트를 다른 프로그램이 사용 중이라면 톰캣의 conf 아래 server.xml 에서 8080을 다른 번호로 변경한다.
--> 이미, 오라클이 8080 포트를 사용중이라면, 위 경로에서 톰캣 첫 화면은 보이지 않음.

참고로, 오라클 혹은 JBuilder 설치 후 톰캣이 안 되는 경우 : 오라클 8i 이후 버전 혹은 JBuilder는 자체적으로 JVM(즉, 자바 명령어)을 가지고 있기 때문에 현재 설치된 J2SDK와 충돌. 환경변수 PATH에서 오라클을 J2SDK보다 앞서 기술해준다.



CGI(Common Gateway Interface) - C, C++, Perl
JAVA - Servlet, JSP

CGI가 프로세스 기반으로 동작하는 것에 비해, 서블릿은 스레드 기반으로 동작. 스레드에 비해서 프로세스는 생성 속도가 느리고 시스템 자원을 많이 소모. 그 밖에 플랫폼에 독립적이고, 객체지향적이며, 각종 라이브러리를 이용할 수 있다는 장점이 있다. CGI 프로그램을 개발하려는 경우 적당한 통합개발환경(IDE)가 없지만, 자바의 경우는 다수의 IDE가 존재. 그래서, 프로그램 디버깅 측면에서도 Perl이나 C로 작성된 CGI 프로그램은 예외 처리가 되지 않아서 에러가 발생한 곳이 어딘지지를 찾기가 어렵다. 이에 반해 자바에서는 예외처리 기능과 IDE를 이용해서 쉽게 에러를 발견할 수 있다. 이러한 여러 가지 측면에서 크고 복잡한 프로그램 개발에는 서블릿이 CGI 프로그램보다 적합하다.



서블릿 설치
서블릿은 두 개의 패키지로 구성.
① javax.servlet  //일반 서비스를 위한 서블릿 패키지
② javax.servlet.http  //HTTP 서비스를 위한 패키지
자카르타 톰캣 디렉터리(/common/lib/servlet-api.jar)를 자바 디렉터리(jdk1.x.x/jre/lib/ext)에 복사해 놓으면 사용할 수 있다.
서블릿 설치 작업은 끝.

xml 파일 수정 : 톰캣 디렉터리(/ROOT/WEB-INF)의 web.xml 파일을 변경.
어떻게? invoker, org.apache.catalina.servlets.InvokerServlet 부분과 invoker, /servlet/* 부분을 주석 해제. 또는 작성.

예)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;  //서블릿 패키지들을 임포트

public class HelloServlet extends HttpServlet {  //서블릿 클래스는 주로 HttpServlet로부터 상속받아 작성
 public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
   //클라이언트의 GET 요청을 처리하기 위해서는 doGet() 함수를 작성. 이 함수는 예외가 발생할 수 있기 때문에 throws 사용.
   res.setContentType("text/html; charset=KSC5601");  //MIME 타입과 한글 문자 인코딩을 지정.
   PrintWriter out = res.getWriter();  //클라이언트에 내용을 전송하기 위해서 PrintWriter를 생성.
   out.println("<html>");
   out.println("<head><title>Hello Servlet</title></head>");
   out.println("<body>");
   out.println("Hello Servlet!!");
   out.println("</body>");
   out.println("</html>");  //PrintWriter를 통해서 쓰인 내용들은 클라이언트의 웹 브라우저로 전송된다.
   out.close();
 }
}

실행 : http://localhost:8080/servlet/HelloServlet 사이트를 방문.
참고로, 서블릿 이름은 대·소문자를 구별한다.