JSP를 처음 배울때 php에서 ?가 단지 %로 바뀐거 뿐인 것 같은데 왜 JSP가 대규모에 적합한가 싶은 생각이 들었는데 오늘로서 잘 알게되었다. 자바에서 패키지를 작성하고 패키지를 JSP에서 그대로 활용할 수 있다. 필자는 이클립스를 사용하지 않아서 적용하는데 어려움이 많았다.




디렉터리 구조

1
2
3
4
5
6
7
8
9
10
11
[D]webapps(tomcat)
- [D]test
  - index.jsp
  - [D]ssi
    - ssi.jsp
  - [D]WEB-INF
    - [D]JAVA_SOURCE
      - [D]myutil
        - DBOpen.java
        - DBClose.java
        - DBInfo.java

많이 해맸던 부분은 패키지를 컴파일 하는 부분과 JSP에서 컴파일된 클래스를 어떻게 사용하느냐에 관련된 것이었다. 이클립스를 사용하면 이클립스에서 알아서 해주는 것 같다.


패키지 컴파일 할 때

터미널에서 패키지를 컴파일 할 때는 JAVA_SOURCE 디렉터리에서 진행해야 하며 다음과 같이 컴파일 할 수 있다.

1
javac ./myutil/*


클래스 파일 사용법

이제 컴파일된 패키지(클래스 파일들)를 WEB-INF 디렉터리 안에 classes라는 디렉터리를 생성해서 패키지 이름안에 클래스 파일을 넣으면 된다. 가령 위와같은 패키지를 컴파일하여 사용할 예정이라면

1
2
3
4
5
6
7
8
9
10
11
- [D]WEB-INF
  - [D]classes
    - [D]myutil
      - DBOpen.class
      - DBClose.class
      - DBInfo.class
  - [D]JAVA_SOURCE
    - [D]myutil
      - DBOpen.java
      - DBClose.java
      - DBInfo.java

위와같이 등록하면 되겠다. 이후 ssi.jsp를 다음과 같이 생성한다.

1
2
3
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="myutil.*" %>
<% request.setCharacterEncoding("utf-8"); %>

이후 다른 JSP 파일에서는 위 ssi를 호출하면 패키지의 클래스를 그대로 활용할 수 있다.

1
2
3
4
5
6
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ include file="ssi/ssi.jsp" %>
<% 
   DBOpen do = new DBOpen();
   ...
%> 

위와같이 패키지로 사용하는 것이 DAO(Data Access Object)와 DTO(Data Transfer Object)인데 DAO는 데이터베이스에 접근하기 위한 것이고 DTO는 계층간의 값 교환을 위한 것이다. 필자는 예시를 들기위해 위와같이 DB 파일만 넣었지만 실제로는 위 클래스를 활용하여 값을 호출하는 DAO와 DAO를 통해서 값을 입출력하는 DTO를 만드는 것이 정석이다.

WRITTEN BY

배진오

하고싶은 건 다 하면서 사는게 목표
im@baejino.com

comments powered by Disqus