|
카테고리
전체
제갈장비-Linux 제갈장비-TOMCAT 제갈장비-JAVA -------------------- 문서-Linux 문서-Powerbuilder 문서-JAVA 문서-ASP 문서-하드웨어 문서-EDPS 문서-MSSQL -------------------- TIP-JAVA TIP-Perl TIP-ASP TIP-Powerbuilder 01 TIP-Javascript TIP-Excel TIP-XML TIP-MSAccess TIP-PostgreSql TIP-Windows TIP-Linux TIP-HTML TIP-TOMCAT -------------------- ETC Secret Util-Japan 미분류 최근 등록된 덧글
잘읽어 보았습니다. 그런..
by 이윤철 at 11/07 1000 666 by qhrlfeh77 at 05/21 123 by qhrlfeh77 at 05/21 by qhrlfeh77 at 05/21 감사합니다!! HashSet.. by 세레네이 at 04/06 찾고 있었던 자료인데 .. by 나그네 at 01/09 감사합니다. 잘 보았습.. by 졸면죽는다 at 10/28 좋은 정보 정말 감사합니.. by 강성훈 at 10/22 좋은글 퍼가겠습니다. by 정의진 at 09/29 이제야 봤습니다. iText.. by 제갈장비 at 08/09 이글루 파인더
|
2006년 09월 15일
웹보고서 기능 만들기 작성일 : 2006년 8월 20일 수정일 : 2008년 8월 9일 - iTextAsian.jar 다운로드URL변경 http://itext.sourceforge.net/downloads/iTextAsian.jar -> http://prdownloads.sourceforge.net/itextpdf/iTextAsian.jar 작성자 : 제갈장비 들어가기에 앞 서 이 문서는 나는나 님의 블로그에 올려져 있는 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
| |||||