내가이 같은 응용 프로그램을 작성했습니다, 그래서 그것을이 가능입니다 :)
먼저 말씀 드릴 수 있습니다, 당신은 GUI의 아무것도를 제거해야합니다. 서버에 GUI가 없어도됩니다. 즉, ChartFrame frame
이 버려졌습니다. 차트를 만드는 내 주요 루틴은 다음과 같습니다
private void createChart(XYPlot plot, String fileName, String caption) throws IOException {
JFreeChart chart = new JFreeChart(caption, plot);
chart.addSubtitle(this.subtitle);
if (plot.getRangeAxis() instanceof LogarithmicAxis) {
chart.addSubtitle(1, new TextTitle("(logarithmische Skala)"));
}
File file = new File(fileName);
file.delete();
ChartUtilities.saveChartAsPNG(file, chart, CHART_WIDTH, CHART_HEIGHT);
}
이것은 당신이 당신의 웹 페이지에서 <img>
로까지 제공 할 수있는 파일을 만듭니다. 또는 (조금 더 고급) ChartUtilities를 사용하여 이미지 URL에 대한 요청에 응답하여 제공 할 수있는 스트림을 만들 수 있습니다.
마술의 또 다른 비트는 GUI없이 그래픽 코드를 실행하고 있다고 Java에 알리는 것입니다. 환경 변수를 설정해야합니다
-Djava.awt.headless=true
Tomcat과 같은 웹 응용 프로그램 서버의 경우 Tomcat 시작 스크립트로 이동합니다.
업데이트
좋아 그래 수행하지 않는 'ChartUtilities.saveChartAsPNG();' 차트를 파일 시스템에 저장하면됩니까? 사용자가 변수를 입력하고 브라우저에서 차트를 직접 표시 할 수있게하려고합니다.
사용자가 한 명이라면 이미지를 파일 시스템에 쓰는 것이 설명하는 시나리오에 적합합니다. 실제로 이것이 저의 첫 번째 버전입니다. 사용자가 매개 변수를 지정한 양식의 HTML 응답 페이지에 4 <img>
태그가 있습니다. 내 이미지가있는 4 개의 파일 이름을 가리키는 파일입니다. 오랫동안 사용자에게 대답을 보내기 전에 해당 파일을 작성하는 것이 좋습니다.
여러 명의 사용자가있는 경우 문제가 발생합니다. 그러면 다른 사용자가 지정한 차트를 볼 수 있습니다. 사용자의 ID 또는 세션을 차트 파일 이름으로 인코딩 할 때 가능한 회피 방법이 있지만 추악합니다. 각 이미지의 주문형 동적 생성을 기반으로 한 더 나은 방법이 있습니다.
난 당신이 HTML/HTTP에 대해 얼마나 알고 있는지 모른다, 그래서 나는이 지루 당신에게 않을거야 희망 : 주어진 HTTP 요청에 대한
만의 단일 스트림을 반환 할 수 있습니다 데이터. 일반적으로 HTML 페이지, 즉 텍스트 스트림입니다. HTML 페이지에 이미지가 필요한 경우 <img>
링크를 다른 URL로 HTML 페이지에 삽입하면 이면서 페이지 만 텍스트로 가득 채워집니다. 브라우저 다음이 진행되고 <img>
태그에 언급 된 URL에 대한 요청을 실행하여 이미지를 요청합니다. 이미지가 파일 시스템의 파일 일 때 이것은 매우 쉽습니다.차트와 같이 동적으로 생성 된 이미지를 원한다면, 생성하고자하는 각 종류의 이미지에 대한 URL을 생각해 내야하며, 각 URL을 그러한 이미지를 생성하는 방법을 알고있는 서블릿에 매핑해야합니다.
내 앱에는 한 페이지에 4 개의 다른 차트가 있었기 때문에 내 HTML 페이지에는 동일한 차트 생성 서블릿에 매핑 된 네 개의 다른 URL이있는 4 <img>
태그가 있었지만 URL에 서블릿에 어떤 매개 변수가 있는지 종류의 차트가 필요했습니다. 요청을 받으면 서블릿은 JFreeChart 매직을 수행 한 다음 ChartUtilities.writeChartAsPNG()
을 사용하여 생성 된 이미지를 서블릿의 출력 스트림으로 덤프합니다.
좋아 그래 미상 :
이사용자 정의 StreamingResolution은 다음과 같습니다 'ChartUtilities.saveChartAsPNG();'가 아닙니다. 차트를 파일 시스템에 저장하면됩니까? 사용자가 변수를 입력 할 수있게하고 브라우저에서 차트를 직접 표시 할 수있게하려고합니다. 내가 제공 한 코드로 할 수 있습니까? 고마워요 – robbie
아니요, 그게 제가 "고급"옵션이라고 부른 것입니다. 내 대답을 몇 가지 힌트로 업데이트하겠습니다. –