iReport 개발자 매뉴얼.pdf
JasperReports_개발자_매뉴얼-rokmc7980304.pdf
를 보고 아주 많은 도움을 받았습니다.
아직도 위의 매뉴얼을 반도 해 보진 못했지만 간단한 웹보고서를 만들 수 있었습니다.
필요하신 분은 나는나님의 블로그에 방문하셔서 위의 PDF 파일을 다운받아서 공부하시면 보다 심도깊은 보고서를 만드실 수 있다고 생각합니다. 좋은 자료를 공개하신 나는나님에게 다시 한 번 감사의 말씀을 전합니다.
-----------------------------------------------------------------------------
사용된 것들
MS Windows 2000 Advanced
JDK5.0 Update 8
TOMCAT 5.5
PostgreSql 8.1.4
Struts 1.2.9
iReport 1.2.5
JasperReports 1.2.5
Adobe Reader 7.0
AcroEdit 0.9.5.30
이 글을 무리없이 보고 이해할 수 있는 레벨
이글은 제가 생각하기에
웹보고서를 만드는 가장 쉬운 방법을 적은 글입니다.
하지만, 쉽다고는 하지만 아래에 밝힌 실력만큼은 갖추고 있는 분에게만
쉽다는 얘기입니다.
본문에서는 각 분야의 기초적인 설명은 하지 않습니다.
기초설명하다가 본래의 목적을 벗어날까 해서 입니다.
- 우선 톰캣에 웹어플리케이션을 만들 줄 알고 간단하게나마 운용할 줄 알아야 합니다.
- 자바에 대한 공부가 어느정도 되어 있어야 합니다.
명령행에서 컴파일을 할 줄 알아야하고
간단한 소스는 눈으로 보고 어떻게 돌아가는 건지 파악할 줄 알아야 합니다.
- Struts에 대한 지식이 약간(?) 필요합니다.
- 데이타베이스를 다룰줄 알아야 합니다.
이 문서에서는 PostgreSql을 사용하는데 다른 RDBM도 상관없지만
데이타베이스를 만들고 테이블도 만들어서 프라이머리키를 지정할 수 있고
기본적인 SQL문을 작성해서 실행할 줄 알아야 합니다.
-----------------------------------------------------------------
자~~~ 그럼, 본론으로 들어갑니다.
이번엔, 최근에 조사하고 테스트한 웹보고서를 만드는 법에 대해 내용입니다.
거의 3주간 자료찾아보고 테스트하느라 제 PC를 몇 번씩 뒤집었다는...
의외로 자료가 부족해서 시간이 많이 걸렸습니다.
이 자료를 보고 저처럼 쓸데없이 시간을 버리는 것을
조금이나마 줄일 수 있었으면 합니다.
일반 C/S 프로그램에서는 각종 개발툴의 안에 보고서를 만들어 주는 기능이
들어 있거나 관련 라이브러리가 있어서 제작하기가 쉽지만
웹상에서 정형화된 보고서를 유저에게 제공하는 기능을 보기란 그리 흔치 않습니다.
이번에 알아본 것은 iReport라는 프로그램과
JasperAssistant라는 Eclipse 플러그인이었습니다.
이중에 JasperAssistant는 유료이고 Eclipse에서 사용하는 것이기도 하고
실제로 사용해 보니 iReport로도 웬만한 보고서는 만들어 낼 수 있었고
화면 운영방식이 Eclipse 안에서 움직이는 것이 틀릴 뿐이고 기본적인 것은
거의 같기 때문에 JasperAssistant에 대한 설명은 하지 않습니다.
이 문서를 충분히 이해하신 분은 무리없이 JasperAssistant도 다룰 수 있을 겁니다.
하지만 고급기능들까지 해 보질 않아서
둘사이의 장단점을 확실히 꼬집어 내진 못하겠습니다.
이 문서를 이해하면 할 수 있는 것
Java + Tomcat(Struts) + PostgreSql의 환경하에서
간단한 웹보고서를 자신의 웹어플리케이션에서 제공할 수 있게됩니다.
이 문서의 소프트웨어 환경
다음은 이 문서를 작성하면서 설치한 환경입니다.
실력이 있으신 분은 상관없지만
되도록 똑같은 환경에서 하셔야 에러를 최소한으로 줄이실 수
있을 것입니다.
자신의 환경을 감안하면서 적용해 보시기 바랍니다.
운영체제 : MS Windows 2000 Advanced
JDK5.0 (설치하기)
Tomcat 5.5 (설치하기)
PostgreSql 8.1.4 (설치하기)
Test용 Tomcat 웹어플리케이션 MyWeb02 (설치하기)
Adobe Reader 설치<-- 알아서 설치하시길...
꼭! 사전에 설치해 둬야 합니다.
되도록 한국어 버전으로....
위의 소프트웨어들은 제 블로그를 보시면
다운로드 -> 설치 하는 법을 아실 수 있습니다.
(뭐,, 당연히 각자 하셔도 됩니다. 설치시 특별히 어려운 점은 없으니까요)
Struts 다운로드 및 설치
다운로드 URL : http://struts.apache.org/downloads.html
다운로드 파일명 : struts-1.2.9-bin.zip(13.8MB)
설치 : 우선 적당한 곳에 압축을 풀어놓습니다.
압축을 푼 폴더의 밑에 webapps 라는 폴더가 있는데
그 안의 struts-blank.war를 톰캣밑의 webapps에 복사해
넣습니다.
그러면 struts-blank 라는 웹어플리케이션이 자동으로 생깁니다.
스트러츠 사용할 줄 아시는 분은 다 아시는 내용이라고 생각하기 때문에
자세한 설명은 하지 않겠습니다.
* 나중에 이 안의 lib 안의 파일들을 웹어플리케이션에 그대로
복사해 넣을 것입니다.
JasperReports의 다운로드와 설치
JasperReports H.P URL : http://jasperforge.org/sf/projects/jasperreports
JasperReports 다운로드 :
http://sourceforge.net/project/showfiles.php?group_id=36382&package_id=28579
다운로드 파일명 : jasperreports-1.2.5.jar(1.33MB)
jasperreports-1.2.5-applet.jar(196KB)
jasperreports-1.2.5-project.tar.gz(24.1MB)
; (이 파일은 이 문서에서는 사용하지 않음)
jasperreports-1.2.5-project.zip(28.3MB)
JasperReports 설치 : 특별히 설치할 작업은 없습니다.
단지, 미리 jasperreports-1.2.5-project.zip 의 압축을
풀어놓으면 편할지도 모릅니다.(애매하군...)
* 이것도 나중에 이 안의 lib 폴더 안의 파일들을 웹어플리케이션에
전부 복사해 넣을 것입니다.
iReport의 다운로드
다운로드 URL : http://sourceforge.net/project/showfiles.php?group_id=64348
다운로드 파일명 : iReport-1.2.5-windows-installer.exe(30.3MB)
iReport의 설치
다운로드 받은 iReport-1.2.5-windows-installer.exe 을 더블클릭
설치시 어려운점은 없습니다. 그냥 Next 버튼을 몇 번 눌러주면 설치 끝.
설치 위치는 설치시 특별히 바꾸지 않는한
C:/Program Files/JasperSoft/iReport-1.2.5 에 설치 됩니다.
iReport로 템플레이트 파일 만들기
설치시 경로를 바꾸지 않았다면
C:/Program Files/JasperSoft/iReport-1.2.5
에 설치되었을텐데
저의 경우에는 iReport.exe 를 실행하지 않고
iReport.bat 를 실행합니다.
왠지 이 배치파일로 실행해야 제대로 환경을 끌여들여서 실행하는 것 같습니다.
- iReport 화면이 떳으면 제일 처음에 JDBC 파일을 연결시켜 줍니다.
여기서는 PostgreSql 8.1.4를 설치했으므로
PostgreSql 8.1.4의 설치폴더 밑에 JDBC 폴더 안에
JDBC 드라이버가 설치되어 있는 것을 사용합니다.
메뉴에서 Options->Classpath 를 선택하면 윈도우가 하나 뜨는데
그 윈도우의 오른쪽에 있는 Add JAR 버튼을 누릅니다.
C:Program FilesPostgreSQL8.1jdbc 안의 postgresql-8.1-405.jdbc3.jar
를 선택합니다.
Save classp... 라는 버튼을 눌러 저장하고 나옵니다.
- 다음은 사용할 데이타소스를 정의해 줍니다.
메뉴에서 Data->Connections / Datasources 를 선택합니다.
화면 오른쪽의 New 버튼을 선택합니다.
아래 그림처럼 입력합니다.(각자의 환경에 맞추면 됩니다.)
WITH OWNER = postgres
ENCODING = 'EUC_KR'
TABLESPACE = pg_default;
(
rel_id int2 NOT NULL,
rel_name text,
CONSTRAINT "rel_PK" PRIMARY KEY (rel_id)
)
(
uid int4 NOT NULL,
fname text,
telno1 text,
rel_id int2,
CONSTRAINT "tbl01_PK" PRIMARY KEY (uid)
)
insert into rel(rel_id, rel_name) values(2,'친척');
insert into rel(rel_id, rel_name) values(3,'친구');
insert into rel(rel_id, rel_name) values(4,'선배');
insert into rel(rel_id, rel_name) values(5,'후배');
insert into tbl01(uid,fname,telno1,rel_id) values(2,'어머니','022-222-2222',1);
insert into tbl01(uid,fname,telno1,rel_id) values(3,'큰형','033-333-3333',1);
insert into tbl01(uid,fname,telno1,rel_id) values(4,'막내','044-444-4444',1);
insert into tbl01(uid,fname,telno1,rel_id) values(6,'매형','066-666-6666',2);
insert into tbl01(uid,fname,telno1,rel_id) values(8,'용팔이','088-888-8888',3);
insert into tbl01(uid,fname,telno1,rel_id) values(9,'삼순이','099-999-9999',3);
insert into tbl01(uid,fname,telno1,rel_id) values(11,'김선배','200-200-2000',4);
insert into tbl01(uid,fname,telno1,rel_id) values(12,'이선배','300-300-3000',4);
insert into tbl01(uid,fname,telno1,rel_id) values(14,'오연수','234-234-2345',5);
insert into tbl01(uid,fname,telno1,rel_id) values(15,'김희선','345-345-3456',5);
FROM tbl01 a LEFT JOIN rel b ON a.rel_id = b.rel_id
ORDER BY b.rel_name
FROM tbl01 a LEFT JOIN rel b ON a.rel_id = b.rel_id
ORDER BY b.rel_name
이 예제 웹어플리케이션을 실행하기 위해서는 준비과정이 필요합니다.
예제 소스에는 모든 라이브러리 파일은 담지 않았습니다.
파일크기도 커지고 각자 해 보는 것이 좋기 때문입니다.
예제에 필요한 파일 복사해 넣기
/MyWeb02/WEB-INF/lib 에는 첨부파일에도 아무것도 들어있지 않는데
이 폴더에 아래의 파일들을 복사해 넣으십시오.
- JasperReports를 압축해제한 폴더의 밑의 lib 안의 모든 JAR 파일
- jasperreports-1.2.5.jar
- jasperreports-1.2.5-applet.jar
- iTextAsian.jar
- postgresql-8.1-407.jdbc3.jar
- /struts-blank 웹어플리케이션의 lib 안의 모든 파일
참고로 아래는 이 문서 작성시 /MyWeb02/WEB-INF/lib 에 들어있던 파일리스트입니다.
예제 프로그램을 실행시키기 위해서 이 파일들이 모두 필요하진 않습니다.
좀 더 가볍게 실행시키시고 싶은 분은 필요없는 것은 지우셔도 상관없습니다.
제 경우에는 잘 모르기 때문에 하나씩 지우면서 웹 어플리케이션이 실행되나 안되나
시험하면서 정리를 했었는데 나중에 귀찮아서 그냥 전부 넣고 돌립니다.
[/MyWeb02/WEB-INF/lib]
ant-1.5.1.jar
antlr-2.7.5.jar
antlr.jar
commons-beanutils-1.5.jar
commons-beanutils.jar
commons-collections-2.1.jar
commons-digester-1.7.jar
commons-digester.jar
commons-fileupload.jar
commons-javaflow-20060411.jar
commons-logging-1.0.2.jar
commons-logging-api-1.0.2.jar
commons-logging.jar
commons-validator.jar
groovy-all-1.0-beta-10.jar
hibernate3.jar
hsqldb-1.7.1.jar
itext-1.3.1.jar
iTextAsian.jar
jakarta-bcel-20050813.jar
jakarta-oro.jar
jasperreports-1.2.5-applet.jar
jasperreports-1.2.5.jar
jcommon-1.0.0.jar
jdt-compiler-3.1.1.jar
jfreechart-1.0.0.jar
jpa.jar
jxl-2.6.jar
list.txt
mondrian-2.0.1.jar
png-encoder-1.5.jar
poi-2.0-final-20040126.jar
postgresql-8.1-407.jdbc3.jar
servlet.jar
struts.jar
xalan.jar
xercesImpl.jar
xml-apis.jar
그리고 /MyWeb02/reports 에 위에서 iReport로 만든 파일을 넣어주는데
이 문서의 경우 보고서명(파일명)이 report01이었습니다.
그리고 report01.jrxml 파일은 잘 아는 곳에 저장을 해 두었습니다.
이 문서의 경우는 D:/TEST 였습니다.
그 report01.jrxml 과 iReport의 설치폴더 안에 보면 report01.jasper 파일이 있습니다.
위의 2개의 파일을 /MyWeb02/reports 에 넣어줍니다.
즉, report01.jrxml , report01.jasper 를 /MyWeb02/reports에 넣어줍니다.
다음, /MyWeb02/jsp 안에 java 파일이 2개 있습니다.
이 자바파일들을 컴파일해야 합니다.
이것도 컴파일한 클래스 파일을 넣을까 하다가 소스만 넣어 두었습니다.
명령행에서 컴파일 방법
- 우선 클래스패스에 같은 폴더에 들어있는 jasperreports-1.2.5.jar 를 더해 줍니다.
>set classpath=%classpath%;D:/tomcat_webapps/MyWeb02/jsp/jasperreports-1.2.5.jar[엔터]
-> 이 때 클래스패스에
%JAVA_HOME%libtools.jar
%JAVA_HOME%libdt.jar
가 잡혀있는 경우에는 위와 같이 해주면 되지만
이 문서에서의 환경에서는 환경변수에 CLASSPATH가 없었습니다.
그래서 위의 명령행에서 위의 폴더까지 들어가서
아래와 같이 클래스패스를 잡아주었습니다.
>set classpath=.;jasperreports-1.2.5.jar[엔터]
- 컴파일
>javac JRViewerSimple.java[엔터]
>javac EmbeddedViewerApplet.java[엔터]
다음은 서블릿 파일을 컴파일합니다.
이 파일은 /MyWeb02/WEB-INF/src/reports 안에
JasperPrintServlet.java
ReportServlet.java
라는 이름으로 들어 있습니다.
Eclipse 를 사용하시는 분이라면 쉽게 컴파일까지 하실 수 있을겁니다.
여기서는 Eclipse가 없을 때 명령행에서 컴파일하는 방법을 설명합니다.
우선 명령행으로 나가서 /MyWeb02/WEB-INF/src/reports 까지 들어갑니다.
그 다음 여기서도 필요한 클래스를 패스로 잡아주고 컴파일하겠습니다.
다음 명령을 넣어줍니다.
>set classpath=.;C:/Tomcat55/common/lib/servlet-api.jar;../../lib/jasperreports-1.2.5.jar;../../lib/commons-beanutils.jar;../../lib/commons-digester.jar;../../lib/postgresql-8.1-407.jdbc3.jar;../../lib/struts.jar
이 명령에 대한 설명은 생략합니다.
명령행에서 컴파일하는 법은 우선 다른 웹사이트를 참조하시기 바랍니다.
이 문서와 똑같이 진행시켜 왔다면 컴파일이 될 것입니다.
다음은 컴파일
>javac -d ../../classes ReportServlet.java[엔터]
>javac -d ../../classes JasperPrintServlet.class[엔터]
/MyWeb02/WEB-INF/classes/reports 안을 확인해 보면 클래스 파일들이
생성되어 있을 겁니다.
MENU
Applet View
PDF View
cond1 : ___________
cond2 : ___________
이런 화면이 나타납니다.