블로그 이미지
'무른모'란 부드럽다라는 뜻을 가진 '무르다'라는 말과 도구, 연장을 뜻하는 '연모'라는 순 우리말의 합성어로 소프트웨어를 말합니다. seanhigher

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total652,955
Today8
Yesterday77

'서블릿'에 해당되는 글 2건

  1. 2010.06.11 Servlet은 특별한 폴더구조가 필요하다. (1)
  2. 2010.06.11 Servlet, 제대로 되는지 확인해보자!
JSP에 필요한 Java, 웹서버, 컨테이너등을 설치했다고 해서 곧바도 JSP 를 사용할 수 있는 것은 아니다. JSP 파일을 실행하는 것은 가능하지만, 직접 개발을 하거나 컴파일을 해서 사용을 할 수는 없다. 다른사람이 만들어놓은 JSP 파일의 사용 환경만 만들어지는 것이다. 자바 컴파일을 통해 완벽한 JSP 개발환경을 만들기 위해서는 서블릿을 구현하여야 한다. 하지만, 어렵진 않다.


서블릿.
서블릿은 javax.servlet 패키지 라이브러리를 말한다. JSP는 기본적으로 JAVA 패키지와 라이브러리들을 사용하지만, 웹이라는 환경에 최적화된 환경을 구성하고 사용하기 위해 만들어진 것이 servlet 패키지이다. 서블릿을 사용하기 위해서는 servlet 패키지를 JAVA 의 기본 패키지에 포함시키는 것만으로 개발환경을 만들 수 있다.


Servlet 환경 구성하기
서블릿을 사용하기 위한 패키지는 'servlet-api.jar'에 모두 포함되어 있다. 자바를 설치할때 J2EE를 설치하였다면 이것이 기본적으로 포함되어 있지만, Mac에서는 기본적으로 J2SE 가 설치되어 있기 때문에 'servlet-api.jar'을 직접 포함시켜 주어야 한다.


그림1. servlet-api.jar 파일의 위치

'setvlet-api.jar' 파일은 Tomcat 설치된 폴더의 lib 폴더안에서 발견할 수 있다. 이 파일이 있는 위치를 확인한 후 터미널을 실행시킨다. 터미널을 맨 처음 실행시키면 사용자 디렉토리로 실행되는데 이곳에서 환경설정 파일을 수정하도록 한다. 맨처음에는 환경설정 파일이 없기 때문에 새로운 파일을 생성해야 한다.

$ vi .bash_profile

그림2. 환경설정 파일 생성

'.bash_profile' 은 쉘에서의 환경설정파일이다. 유닉스를 기반으로 하는 Mac에서는 환경설정 파일을 통해서 다양한 환경변수의 설정이 가능하다. 서블릿을 사용하기 위해서는 'servlet-api.jar'파일을 환경변수에 포함해 주어야 한다. vi 는 유닉스에서 가장많이 애용되는 에디터이다. 'vi .bash_profile' 은 .bash_profile 파일이 있을 경우 수정을 하고, 없을 경우에는 새로운 파일을 만들게 된다. 새로운 화면으로 전환되면 'a' 키를 눌러서 입력모드로 변경한 후 다음과 같이 입력한다.

export CLASSPATH='/User/seanhigher/Library/apache-tomcat-6.0.26/lib/servlet-api.jar'

그림3. '.bash_profile'파일 생성

'CLASSPATH='와 '/servlet-api.jar' 사이에 있는 경로는 톰켓 컨테이너를 설치했던 경로를 입력하도록 한다. 입력을 마친 후에는 'esc'키를 눌러서 vi의 커맨드 모드로 변경한 후 ':'를 입력하고 'wq'를 차례로 누르면 파일이 저장된다. 이제 터미널을 종료하고 다시 시작하면 새로 생성한 '.bash_profile'이 적용되어 서블릿을 사용하기 위한 환경이 완료된다.


servlet 파일을 실행하기 위한 구조.
JSP는 웹에서 실행가능한 어플리케이션이라고 할 수 있다. 이러한 웹 어플리케이션을 실행하는데 도와주는 것은 톰켓인데, 톰캣은 폴더의 형식에 보고 그것이 웹 어플리케이션인지를 판단하게 된다. 톰캣이 설치되어 있는 폴더를 보면 'webapps'라는 폴더가 있는데 톰캣은 이 폴더안에 있는 폴더들을 어플리케이션 폴더로 인식을 하게 된다. 그리고 각각의 폴더는 'http://localhost/폴더명' 으로 접근이 가능하다. 웹 어플리케이션으로 동작을 하기 위해서는 몇가지 폴더가 있어야 한다. 웹 어플리케이션이 저장되는 webapps 폴더 아래 ServletExam이라는 폴더를 만든다. 테스트를 하기 위한 폴더를 만드는 것이다. 웹 브라우저에서는 'http://localhost/ServletExam' 이라는 경로로 접근이 가능하다. 새로 만든 ServletExam 폴더 아래 'WEB-INF' 폴더를 생성한다. ServletExam 은 임의의 웹 어플리케이션 폴더 이름이기 아무렇게나 지어도 상관없지만, WEB-INF 는 웹 어플리케이션의 기본적인 폴더 구조이기 때문에 꼭 동일한 이름으로 생성해야 한다. 그리고 하위폴더로 src, classes, lib 폴더를 생성하는데 이 폴더들은 각각 소스파일, 컴파일된 클래스 파일, 추가 라리브러리파일들이 각각 포함하게 된다.


그림4. 서블릿을 실행하기위한 폴더 구조

이렇게 서블릿을 위한 폴더 구조를 만들었다. 아직 이것만으로는 부족하지만, 지금까지 별다른 어려움 없이 했다면 앞으로도 어렵지 않게 할 수 있을 것이다.

Posted by seanhigher

댓글을 달아 주세요

  1. 2012.08.17 18:17 bytes  댓글주소  수정/삭제  댓글쓰기

    설정 후 source ~/.bash_profile 로 실행 해 주시면, 재시작 할 필요 없습니다

JSP는 간결하다. 하지만, 그 기본이 되는 Servlet를 알지 못하고는 제대로 알 수 있다고 할 수 없다. 마치 한글 자모음을 모른채 각 단어의 뜻만 안다는 것? 많은 단어의 뜻을 알고 있으면 언어를 구사하는데는 어려움이 없지만, 풍부하고 다양한 언어를 구사할 수 없다. 자신의 생각을 나타내는대 있어서 한계를 갖게 되는 것이다.


JAVA 파일 만들기.
Servlet이 제대로 실행되는지 확인하기 위해서는 직접 서블릿 파일을 생성해 보고, 실행해보는것이 가장 빠른 방법이다. 서블릿 파일은 JAVA의 클래스들과 HTML의 태그들이 모여 하나의 파일을 만들고 있다. 톰캣이 설치되어 있는 폴더 아래 앞으로 프로젝트를 진행할 임의의 폴더를 생성하고 WEB-INF, src, classes, lib 의 폴더들을 차례로 만든다. 그리고 src 폴더안에 'HelloServlet.java'라는 파일을 새로 생성하고 다음의 코드를 입력한다.

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

public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException {   
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
       
        out.println("<html>");
        out.println("<head><title>Hello Servlet</title></head>");
        out.println("Hello Servlet!");
        out.println("<body>");
        out.println("</html>");
        out.close();
    }
}


위의 소스는 'Hello Servlet!' 라는 메시지를 출력하라는 간단한 소스이지만, 처음 JSP 나 서블릿을 접하는 사람이라면 굉장히 복잡하게 보여질 수 있다. 상세한 설명은 다음으로 미루기로 하고, 위의 코드를 컴파일 하도록 한다. java 파일을 컴파일 하기 위해서는 javac 명령어를 사용하면 된다.

$ cd Library/apache-tomcat-6.0.26/webapps/ServletExam/WEB-INF/src
$ javac -d ../classes/ HelloServlet.java

그림1. java 컴파일

HelloServlet.java 파일을 생성하였다면 터미널을 실행하고, java 파일이 저장되어 있는 src 폴더로 이동하도록 한다. 위에서와 같이 javac 명령어를 이용하여 HelloServlet.java 파일을 컴파일 하도록 한다. 위의 그림에서처럼 아무런 메시지가 나오지 않는다면 제대로 컴파일이 된것이고, classes 폴더에 class 파일이 생성된것을 확인할 수 있을 것이다. javac 명령어는 자바파일을 컴파일을 하는 명령어이다. 여기에 -d 옵션을 주면 원하는 장소에 컴파일한 파일을 생성하게 된다.


web.xml 파일 추가하기.
web.xml 파일은 컴파일된 클래스 파일이 서블릿파일임을 알려주고, 그에 필요한 설정정보들이 포함되어 있는 중요한 파일이다. 아무리 폴더구성을 만들고, java 파일과 컴파일된 class 파일을 만들었다고 해도 서블릿 클래스 파일에 대한 정보를 주지 않는다면 컨테이너는 그것을 확인할 길이 없다. web.xml 은 직접 작성해야 하지만, 처음에 만들기에는 어려움이 있고, 대부분 비슷한 형식을 가지고 있기 때문에 이미 만들어져 있는 파일을 복사해서 조금만 수정하여 사용해도 된다. 톰캣폴더 -> webapps -> ROOT -> WEB-INF 의 폴더에 들어가게되면 web.xml 파일이 있는것을 볼 수 있다. 'web.xml' 파일을 복사해서 ServletExam -> WEB-INF 폴더에 붙여넣기를 한후 'web.xml' 파일을 텍스트편집기 프로그램으로 수정하도록 한다.

<web.xml>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
    ... ...
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <display-name>Welcome to Tomcat</display-name>
    <description>
        Welcome to Tomcat
    </description>
 
    <servlet>
        <servlet-name>ServletExam</servlet-name>
        <servlet-class>ServletExam</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletExam</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
  </web-app>

web.xml 파일을 보면 위와 같이 되어 있는 것을 볼 수 있는데, '</description>' 와 '</web-app>' 사이에 굶은 글씨 부분을 써 넣도록 한다. <servlet> 안의 <servlet-name> 태그안에 있는 이름은 꼭 클래스명과 동일하게 하지 않아도 되지만, <servlet-mapping> 안의 <servlet-name>태그의 이름과는 같아야 한다. <servlet-class> 태그안의 클래스 이름은 컴파일한 클래스명과 동일해야 한다. <url-pattern> 태그 안에 지정한 '/test' 는 서블릿에 접근하기 위한 url을 의미한다. 'web.xml' 파일을 저장하고 톰캣서버를 실행한 상태에서 'http://localhost:8080/ServletExam/test' 입력하면 다음과 같은 서블릿 페이지를 볼 수 있다.


그림2. 서블릿 페이지

간단하게 'Hello Servlet!' 를 출력하는 서블릿을 만들고 실행해 보았다. 간단할 수도, 복잡할 수도 있겠지만, JSP 를 시작하는데 있어서 서블릿은 기초지식과도 같다. 이제 기초를 알았으니, JSP의 세계에 떨리는 한걸음은 내딛은 것이다.

Posted by seanhigher

댓글을 달아 주세요

최근에 달린 댓글

글 보관함