53.jasper&ireport2012. 9. 25. 03:22
반응형
이 문서는 나는나 님의 블로그에 올려져 있는
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로 템플레이트 파일 만들기
- 우선 설치한 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 버튼을 선택합니다.
아래 그림처럼 입력합니다.(각자의 환경에 맞추면 됩니다.)





이 문서에서는
Username 에는 postgres
Password에는 postgres를 넣었습니다.
그 옆에 Save password는 체크해 주는 것이 나중을 위해 편합니다.
( 안 그러면 새로 실행할 때마다 패스워드 넣으라고 시끄럽게 떠듭니다. )
Test 버튼을 눌러 제대로 연결이 되는지 확인합니다.
연결이 안되면 물론 안됩니다.
당연한 얘기겠지만 데이타베이스명, 드라이버명,유저명,패스워드등을 잘 체크합니다.
연결이 잘 되면 Save버튼으로 저장하고 나옵니다.
- 여기서 데이타베이스의 데이타를 정리하고 갑시다.
현재 이 문서에서 사용하고 있는 데이타베이스는 PostgreSql이므로 그것을 위주로
설명을 하겠지만 다른 데이타베이스도 별 문제없이 사용될 것입니다.
데이타베이스에 대한 설명은 위에서도 밝혔듯이 하지 않습니다.
어느 정도 데이타베이스를 다룰줄 알아야 이 밑의 데이타 준비를 할 수 있을 것입니다.
데이타베이스 생성
CREATE DATABASE "MyDB01"
WITH OWNER = postgres
ENCODING = 'EUC_KR'
TABLESPACE = pg_default;
테이블생성
: rel 이라는 테이블을 생성합니다.
이것은 인맥구분에 사용할 테이블입니다.
다음은 생성 SQL입니다.
CREATE TABLE rel
(
rel_id int2 NOT NULL,
rel_name text,
CONSTRAINT "rel_PK" PRIMARY KEY (rel_id)
)
: tbl01 이라는 테이블을 생성합니다.
이것은 인맥정보로서 사용할 테이블입니다.
다음은 생성 SQL입니다.
CREATE TABLE tbl01
(
uid int4 NOT NULL,
fname text,
telno1 text,
rel_id int2,
CONSTRAINT "tbl01_PK" PRIMARY KEY (uid)
)
다음은 위의 테이블에 넣을 데이타를 SQL문으로 만든 것입니다.
insert into rel(rel_id, rel_name) values(1,'가족');
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(1,'아버지','011-111-1111',1);
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(5,'삼촌','055-555-5555',2);
insert into tbl01(uid,fname,telno1,rel_id) values(6,'매형','066-666-6666',2);
insert into tbl01(uid,fname,telno1,rel_id) values(7,'덕팔이','077-777-7777',3);
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(10,'최선배','100-100-1000',4);
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(13,'송혜교','123-123-1234',5);
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);
이 SQL을 실행시켜 기본 데이타를 준비하십시오.
(각자, 준비해도 됩니다.)
- 데이타까지 준비가 됐으니 보고서를 만들 SQL을 만듭니다.
이 문서에서는 이렇게 만들었습니다.
SELECT b.rel_name, a.fname, a.telno1
FROM tbl01 a LEFT JOIN rel b ON a.rel_id = b.rel_id
ORDER BY b.rel_name
- 이제 보고서를 만들 준비가 끝났습니다.
보고서를 만듭시다.(자신의 화면과 이 문서를 맞추어서 보시길...)
우선 iReport의 기능중에 Report Wizard 라는 편리한 기능이 있는데
이것을 이용하면 간단한 보고서 양식은 금방 만들 수 있습니다.
- 메뉴에서 File->Report Wizard 선택
- Step 1 : insert the query to retrieve report fields
Connection / Datasource 에 위에서 만든 데이타소스명을 선택합니다.
여기서는 MyDB01
밑에 SQL Query에 위에서 준비한 SQL 문장을 넣습니다.
SELECT b.rel_name, a.fname, a.telno1
FROM tbl01 a LEFT JOIN rel b ON a.rel_id = b.rel_id
ORDER BY b.rel_name


- Next 버튼을 누르면 "SmartCard PIN"이라는 윈도우가 나와서 Password를
넣으라고 나오는 사람은 데이타베이스 접속 패스워드를 넣어주면 됩니다.
위에서 데이타소스 정의시 Save password에 체크를 해 둔 사람은 이 윈도우는
나타나지 않습니다.
- Step 2 : select fields 화면에서 모든 컬럼명을 오른쪽으로 선택해서 넣습니다.
모든 컬럼을 선택하는 것은 단순히 ">>" 버튼을 누르면 됩니다.
Next 버튼 클릭
- Step 3 : Group by 윈도우는 그냥 두고 Next 버튼 클릭
- Step 4 : choose layout
Tabular layout을 선택
classicT.xml 선택
Next 버튼 선택
- Step 5 : finish
Finish 버튼 클릭
여기까지 왔으면 보고서 하나가 거의 완성이 되었습니다.
우선 저장을 합니다.
(알기쉬운 곳에 저장하는게 좋겠죠?
괜히 아주 잘 보관하겠다고 했다가
나중에 어디다 저장했는지 까먹는 황당한 수가 생깁니다.)
이 문서의 경우에는 D:/TEST/report01.jrxml라는 이름으로 저장했습니다.
다음은, 컴파일
메뉴->Build->Compile 를 선택하면 컴파일 됩니다.
메뉴바에 이쁘장한 아이콘들도 준비되어 있는데 컴파일 아이콘을 찾아서 해도 됩니다.
오른쪽 끄트머리쯤에 있습니다.
( 이 컴파일에서 나오는 에러메세지 같은 것들은 각자 알아서 해결하시길...
이 부분은 저도 설명할만한 수준이 아니라서리..)
다음은 출력될 보고서를 미리 봅니다.
메뉴->Build->JRViewer preview 선택
메뉴->Build->Execut(with active connection)을 선택
잘 보이나요?
잘 보여야 합니다.
안 보이면? 당연히 앞으로 돌아가서 다시 체크해 봐야겠죠?
다음은 PDF 형식으로 보죠.
메뉴->Build->PDF preview 선택
메뉴->Build->Execut(with active connection)을 선택
잘 보이나요?
잘 안보일겁니다.
미리 설명하려다가 위에서 잊어먹었습니다.
PDF로 보려면 iReport에 PDF는 뭘로 보겠다고 정해줘야 합니다.
이 문서에서는 Adobe Reader로 PDF를 볼 것입니다.
그래서 문두의 테스트 환경에 Adobe Reader 설치라고 친절히(?) 적어 놓았던 거죠.
메뉴->Options->Settings 선택
External programs 탭 선택
PDF Viewer에 Adobe Viewer 프로그램 선택
(이 문서에서는 C:/Program Files/AdobeAcrobat 7.0/Reader/AcroRd32.exe )
Save 버튼을 선택해서 저장하고 나옵니다.
다시 위의 PDF 로 보는 걸 해보죠.
잘 보이나요?
이번엔 보입니다.
보이긴 보이는데 뭔가 이상하죠?
한글 항목이 나타나질 않습니다.
그럼 제대로 보이는겁니다.
장난하냐?
아직까진 제대로 된 거란 얘기입니다.
이제부터 한글이 제대로 보이도록 하는 작업을 합니다.
파일을 다운받는데 iTextAsian.jar 라는 파일을 받습니다.
자세히는 모르겠는데 iText.jar와 연계해서 2바이트 코드를 PDF생성시
가능하게 해 주는 것 같습니다.
다운받은 iTextAsian.jar 를 iReport의 lib 폴더에 넣어줍니다.
이 문서에서는 C:/Program Files/JasperSoft/iReport-1.2.5/lib 에 복사했습니다.
iReport를 다시 실행시킵니다.
(노파심; 현재 iReport가 화면에 떠 있으면 닫고 다시 iReport를 실행해야 합니다.)
좀 전에 만든 D:/TEST/report01.jrxml을 불러들입니다.
그리고 한글이 보일 항목을 지정하고 옆에 Element Properties 창에서
PDF Font에 HYGoThic-Medium 를
PDF Encoding에 UniKS-UCS2-H (Korean)를 지정하고
다시 PDF Preview를 해봅니다.
한글이 잘 보이는가요?
잘 보여야 합니다.
더 이상은 나도 잘 모르기 때문에....
잘 보이면 보고서를 좀 더 다듬죠.
영어로된 항목명을 적당히 한글로 고쳐주고 이 때도 폰트를 맞춰줘야 합니다.
(위에 설명한 폰트말고 몇 개가 더 되는게 있는데 그건 각자 찾아 보십시오.)
이 문서에서는 이렇게 다듬었습니다.




참고로 위의 폰트 설정은 나중에 웹보고서 출력시 PDF로 출력할 때
한글을 보여주려고 하기 때문입니다.
위와 같이 설정하고 실행하는 웹어플리케이션에서 PDF로 볼 때 iTextAsian.jar를
찾지 못하면 에러가 납니다.
하지만 애플릿뷰어로 보여줄 때는 맞춰 줄 필요 없습니다.
이제 iReport로 작업하는 것은 이것으로 끝냅니다.
iReport의 디자인 방법이나 다른 기능들은 이 문서에서 설명하지 않습니다.
이 문서의 목적은 웹보고서를 어떻게 구현하는가에 초점을 맞추고 있기 때문입니다.

지금까지 한 것은 자동완성기능인 Report Wizard 를 이용한 것입니다.
수동으로 만드는 것도 각자 연습해 보시기 바랍니다.
아마 다른 비쥬얼툴을 사용해 보신 분이라면 어려움 없이 하실 수 있을 겁니다.
첨부파일을 이용하기
다음은 이 보고서를 웹을 통해 보여주어야 하기 때문에
웹어플리케이션을 하나 만듭니다.
아래의 첨부파일을 풀어서 톰캣이 웹어플리케이션으로서
인식하도록 합니다.


첨부파일 : MyWeb02.zip
웹어플리케이션을 만드는 부분은 설명하지 않습니다.
제 블로그를 보시거나 다른 사이트를 참조하시기 바랍니다.
이제부터 첨부파일의 구조대로 설명합니다.
이 문서에서는 톰캣을 이용하여 MyWeb02라는 웹어플리케이션을 생성했고
그 구조는 다음과 같습니다.




이 예제 웹어플리케이션을 실행하기 위해서는 준비과정이 필요합니다.

예제 소스에는 모든 라이브러리 파일은 담지 않았습니다.

파일크기도 커지고 각자 해 보는 것이 좋기 때문입니다.

예제에 필요한 파일 복사해 넣기

/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 안을 확인해 보면 클래스 파일들이
생성되어 있을 겁니다.

자~~~~ㅅ! 다~~ 되었습니다.

이제 웹어플리케이션 MyWeb02를 재로드하거나
톰캣을 재기동한 후 브라우저로 열어봅니다.

http://localhost:8080/MyWeb02

그러면

MENU



Applet View

PDF View
이런 화면이 나타납니다.
Applet View 를 선택하면
Report name : report01 report02
cond1 : ___________
cond2 : ___________


이런 화면이 나타납니다.
블로그 화면에선 좀 틀리네요.
화면 이미지를 넣을까하다가 중요한 것도 아니라서 관뒀습니다.
test 버튼을 누르면
iReport에서 JRViewer preview 로 본 화면이 나타날 것입니다.
여기서
혹시, 서버와 클라이언트 이렇게 두 대로 이 문서를 따라 하시는 분이 계신다면
클라이언트에서 서버에 접속해서 위의 페이지를 열었을 때
해당 클라이언트에 JRE가 설치되어 있지 않거나
JRE5.0 Update8 이하의 버전이 설치되어 있다면
아래의 화면이 나타날 것입니다.





예 버튼을 클릭하면 JRE를 설치하는 화면이 나옵니다.





동의함 버튼을 선택합니다.
설치가 진행됩니다.
설치가 끝나면 자동으로 혹은 지멋대로
C:/Program Files/Java/jre1.5.0_08 에 JRE가 설치되어 있습니다.
이 경로는 어디서 컨트롤 하는건지 알 수 가 없었습니다.
자동으로 여기에 설치되는 것 같은데 테스트한 운영체제도 역시
Windows2000이였는데 다른 운영체제에서도 같은 장소에 깔리는지는
체크해 보지 못했습니다.
하여간 설치가 된 후 애플릿 화면이 나오길 기대하시겠지만
현재는 에러가 납니다.
그것은 소스 안을 살펴보시면 알게되는데
http://localhost:8080/MyWeb02~~~ 라고 정의 되어 있기
때문입니다.
이 부분도 여러분의 환경에 맞게 서버명을 고쳐서 해 보시기 바랍니다.
그리고 밑에서 설명하는 policy 설정 툴은
C:/Program Files/Java/jre1.5.0_08/bin 안에 들어있습니다.
자~~ ... 여하튼 현재 서버도 클라이언트도 같은 머신이라는 가정하에
계속 갑시다.
서버와 클라이언트가 같은 머신이라면 이상없이 애플릿 화면이 나타날텐데
그 화면에서 프린터 아이콘을 눌러 인쇄를 하려 하면 현재로는 에러 화면이
나타날 것입니다.
이 에러를 잡느라 이틀동안 인터넷을 얼마나 많이 헤멧는지 모릅니다.
원인은 애플릿의 클라이언트 권한 문제였는데
다음과 같이 해서 우선 문제를 해결하시고
클라이언트에게 권한파일을 배포하시는 건 알아서 하시길 바랍니다.
(너무 무책임한 것 같지만 저도 잘 모르겠다는...)
하여간 다음을 보시고 판단하시길 바랍니다.
클라이언트의 명령 프롬프트로 나가서 아래 명령을 실행합니다.
>policytool[엔터]
다음과 같은 메세지가 나타납니다.



확인을 누른 다음
나타난 화면에서 정책항목추가 버튼을 선택합니다.
다음 화면에서 사용권한추가 버튼을 선택합니다.
사용권한 드롭다운리스트박스에서 AllPermission 을 선택합니다.
화면은 이렇게 됩니다.




다음은 확인을 선택합니다.
완료를 선택합니다.
파일->저장을 눌러
이 문서에서는
C:/Documents and Settings/Administrator 에 .java.policy 라는 파일명으로
저장합니다.
파일명 앞에 쩜(.)이 있는 것에 주의하시기 바랍니다.
노파심 : Windows2000이나 XP 사용하시는 분은 로그인한 유저의
루트 디렉토리에 만들어 줍니다.
서버가 아닙니다.
이 웹어플리케이션에 접근하는 클라이언트 입니다.
이렇게 설정이 끝났으면 좀 전의 웹어플리케이션을 처음부터 다시
실행해서 애플릿의 프린터 아이콘으로 인쇄를 해 보시기 바랍니다.
프린터 선택화면이 나오면 성공적으로 퍼미션 문제가 해결된 것입니다.
사실, 저는 이 자바의 퍼미션에 관해 자세히 모릅니다.
위에서 정의한 AllPermission은 좋은 설정이 아닐지 모르니 실제 적용에는
주의하시기 바랍니다.(혹시, 잘 아시는 분이 계시면 저에게도 알려주십시오.)
다음은 PDF 도 실행해 보십시오.
아마, 잘 될 것입니다.
이 문서의 환경과 같고 제가 올린 소스를 그대로 적용하신 분이라면
별문제없이 잘 실행될 것입니다.
이 문서를 작성하느라 제 운영체제를 세번이나 새로 설치해서
이 문서를 보며 재검증까지 마쳤으니까요.
( 그런대도 설명이 이모양이냐? 하시면 저도 어쩔수가 없다는.... )
이제 iReport를 이용한 웹보고서 출력 기능 설명은 끝났습니다.
첨부파일에 대한 자세한 설명은 하지 않았습니다.
설명을 드리지 않아도 제일 처음에 적은 것 처럼
이 정도는 해석하실 수 있는 분에게 맞춰서 작성한 문서입니다.
대신에 이 문서의 처음에 소개해 드린 나는나님의 블로그에 방문하셔서
매뉴얼을 다운받아서 살펴 보시면 많은 도움이 되실 것입니다.
(사실, 소스설명하기에는 실력이 딸려서리...)
또 한가지, 예제의 폼에 있는
cond1과 cond2 는 다른 보고서를 만들 때 SQL에 파라메터를 넘길 경우를
테스트하기 위해 만들어 둔 것입니다.
이 부분은 위의 나는나님의 매뉴얼을 보면서 공부를 해 보시기 바랍니다.
센스가 있으신 분들은 금방 하실 수 있으리라 믿습니다.
그리고 소스의 안에도 위의 두 개의 파라메터를 처리하는 부분이 같이 들어있습니다.
여러분의 몫으로 남겨 둡니다.
(
하다만듯한 느낌이지만 직접해 보시는 것이 나을 것 같습니다.
비록, 문장도 문서의 구성도 서툴지만 찢어진 신문을 읽는 것처럼
이런 문서를 읽는 분들이 있기 때문에 되도록이면 직접해 보시라고...
제 게으름의 변명입니다.
)
그리고, 아직 왜 그런지 정확하게 파악이 안됐지만
위의 JDK 5.0 환경에서 애플릿으로 보고서를 출력시
클라이언트에서 서버로부터 애플릿을 다운받아 볼 때 시간이 꽤 걸렷습니다.
그런데 환경을 J2SE1.4.2_12 로 바꾸고 재컴파일하여 실행하니 굉장히 빨라졌습니다.
하지만 어떤 클라이언트에서는 JRE5.0대가 깔려있는데도 상관없이
빠른 반응속도를 보이기도 했는데 정확하게 원인규명이 되지 않았습니다.
왜 마지막에 이런 내용을 적냐면요....
음...
제 테스트 과정이 이랬거덩요....
하핫.......
열공하세요.

[출처] http://soulcinder.egloos.com/124044

Posted by 1010