허니몬의 IT 이야기/프로그래머, '코드 엔지니어'

인터넷 검색을 통하여 찾아본 구현 방법들은 서블릿에서 저장된 것들을 처리하는 방법들 뿐이었음.

나름 독자적인(?!) 해석을 통하여 JSP로만 구현하는 방법을 터득했다. 이를 이용할 예정임.

현재 진행중인 프로젝트가 완료되면 특별한 기능이 있을 경우, 기재를 하여 설명드리도록 하겠음.


JFeeChart 구현과 관련된 JAR 파일들

1) jfreechart-1.0.0-pre2.jar

2) jcommon-1.0.0-pre2.jar

메뉴얼 API : http://www.jfree.org/jfreechart/api/javadoc/index.html


  1. <%@ page language="java" contentType="text/html; charset=EUC-KR"  pageEncoding="EUC-KR"%>
    <%@ page import="java.io.*" %>
    <%@ page import="org.jfree.data.general.DefaultPieDataset"%>
    <%@ page import="org.jfree.chart.JFreeChart"%>
    <%@ page import="org.jfree.chart.plot.PiePlot"%>
    <%@ page import="org.jfree.chart.ChartRenderingInfo"%>
    <%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
    <%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
    <%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
    <%@ page import="org.jfree.chart.ChartFactory"%>
    <%@ page import="org.jfree.chart.ChartUtilities"%>
    <%@ page import="org.jfree.data.general.PieDataset"%>
    <%@ page import="org.jfree.data.category.DefaultCategoryDataset"%>
    <%@ page import="org.jfree.chart.plot.PlotOrientation"%>
    <%@ page import="org.jfree.chart.servlet.*"%>
    <%@ page import="com.oreilly.servlet.*" %>
    <%@ page import="com.oreilly.servlet.multipart.*" %>


    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>JChart 연습하기</title>
    </head>
    <body>
       <%
           DefaultPieDataset ds = new DefaultPieDataset();
           ds.setValue("홍길동", new Double(40.0));
           ds.setValue("홍길숙", new Double(25.0));
           ds.setValue("기타", new Double(15.0));
          
           JFreeChart chart = ChartFactory.createPieChart("득점분포", ds, true, true, false);
           chart.setBackgroundPaint(java.awt.Color.white);
            chart.setTitle("JChart 연습하기");
            
            ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
          
            
           //PNG 파일명을 만들어내기
            String fileName = ServletUtilities.saveChartAsPNG(chart, 600, 300, info, session);           
          
            System.out.println("파일명 : " +fileName);
            
           //특정 임시 폴더에 이미지 파일을 만들어냄.
            String dir = application.getRealPath("/upload/"); // 파일경로 지정
            dir = "D:\\" + dir.substring(3) + "/";
            String filepath = dir + fileName;
            //System.out.println("File path = "+ filepath);
     
            FileOutputStream fos = new FileOutputStream(new File(filepath));
            File f = new File(filepath);
            ChartUtilities.writeChartAsPNG(fos, chart, 600, 300);
            
            String graphURL = request.getContextPath() + "/upload/" + fileName;
            //System.out.println(graphURL);
           %>
           <img src="<%=graphURL%>"/> <!--//파일 경로와 파일명을 받아서 차트를 보여줌-->

    </body>
    </html>

● 파일명 : jfreechart-2348981821190451270.png (파일명은 ServletUtilities.saveChartAsPNG(chart, 600, 300, info, session); 에 의해서 임의 지정됨)
● File path = D:\workspace\project\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\WomanHappy\upload/jfreechart-2348981821190451270.png  // 웹 서버에 저장된 실제 주소
● /WomanHappy/upload/jfreechart-2348981821190451270.png // 서버에 저장된 주소

JFreeChart.JPG <결과물>

이 글은 스프링노트에서 작성되었습니다.