Make charts appear in new broswer

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
Hermes

Make charts appear in new broswer

Post by Hermes » Fri Dec 02, 2005 7:41 am

This is how my demo works, i have a button in my jsp page (AvailableChart.jsp). So when i click a button (Show me BarChart), it post to the BarChart servlet which is called ChartTest. Instead of displaying the chart on the same page on AvailableChart.jsp i want it to be shown on a new browser, a pop up window (DisplayChart.jsp). So how am i going to do that with my current codes.

Codes for AvailableChart.jsp

Code: Select all

<form action="ChartTest" method="post"> 
&nbsp;Pie Chart&nbsp<input type="submit" value="View"/> 
</form>
Codes for my servlet, ChartTest.java (*this codes currently display chart on existing page of AvailableChart.jsp which i don't want it to)

Code: Select all

package Servlet; 

import java.io.*; 
import java.net.*; 

import javax.servlet.*; 
import javax.servlet.http.*; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset; 

public class ChartTest extends HttpServlet { 
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    
        String[][] aryDat = {{"a","150000"}, {"b","55500"}, {"c","75000"}, {"d","83100"}, {"e","22500"}}; 

        DefaultPieDataset objDpd = new DefaultPieDataset(); 

        for(int i = 0; i < aryDat.length; i++){ 
            objDpd.setValue(aryDat[i][0],Integer.parseInt(aryDat[i][1])); 
        } 

        JFreeChart objCht = ChartFactory.createPieChart3D("My Chart", objDpd, true, false, false); 

        response.setContentType("text/html"); 
        ServletOutputStream objSos = response.getOutputStream(); 
        ChartUtilities.writeChartAsJPEG(objSos, objCht, 600, 400); 
    } 
}
Main point:
1) I don't know what to modify to my servlet codes to be able to display my chart to DisplayChat.jsp
2) I don't know what to code for my jsp page(DisplayChart.jsp) in order to display the chart i've created.

I really need help please, many thanks. Good day to all.

Regards.

angel
Posts: 899
Joined: Thu Jan 15, 2004 12:07 am
Location: Germany - Palatinate

Post by angel » Fri Dec 02, 2005 8:33 am

This has nothing do to with JFreeChart, but a lot with HTML.

Your button has to execute a small Javascript method:


http://msdn.microsoft.com/library/defau ... open_0.asp

Souma
Posts: 17
Joined: Sun Nov 20, 2005 4:02 am

Post by Souma » Fri Dec 02, 2005 5:06 pm

cool 8) i'll try it out, if there's any doubts i'll post again

Souma
Posts: 17
Joined: Sun Nov 20, 2005 4:02 am

Post by Souma » Mon Dec 05, 2005 8:42 am

Help~ no luck... i get error which i do not know what is wrong with it :cry:

My BarChart servlet codes:

Code: Select all

package Servlet;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;

public class BarTest extends HttpServlet {
    protected void dispatchView(HttpServletRequest request, HttpServletResponse response, String viewName) throws ServletException, IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher(viewName);
        dispatcher.forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        doPost(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
     
        CategoryDataset dataset = createDataset();
        request.setAttribute("dataset",dataset);
        dispatchView(request, response, "piechart.jsp");
    }
    
    private static CategoryDataset createDataset() {
        
        // row keys...
        String series1 = "First";
        String series2 = "Second";
        String series3 = "Third";

        // column keys...
        String category1 = "Category 1";
        String category2 = "Category 2";
        String category3 = "Category 3";
        String category4 = "Category 4";
        String category5 = "Category 5";

        // create the dataset...
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(1.0, series1, category1);
        dataset.addValue(4.0, series1, category2);
        dataset.addValue(3.0, series1, category3);
        dataset.addValue(5.0, series1, category4);
        dataset.addValue(5.0, series1, category5);

        dataset.addValue(5.0, series2, category1);
        dataset.addValue(7.0, series2, category2);
        dataset.addValue(6.0, series2, category3);
        dataset.addValue(8.0, series2, category4);
        dataset.addValue(4.0, series2, category5);

        dataset.addValue(4.0, series3, category1);
        dataset.addValue(3.0, series3, category2);
        dataset.addValue(2.0, series3, category3);
        dataset.addValue(3.0, series3, category4);
        dataset.addValue(6.0, series3, category5);
        
        return dataset;
    }
}
My jsp codes:

Code: Select all

<%@page import = "org.jfree.chart.ChartFactory" %>
<%@page import = "org.jfree.chart.JFreeChart" %>
<%@page import = "org.jfree.chart.plot.PlotOrientation" %>
<%@page import = "org.jfree.data.category.CategoryDataset" %>
<%@page import = "org.jfree.data.category.DefaultCategoryDataset" %>
<%@page import = "org.jfree.chart.ChartUtilities" %>
<%@page import = "org.jfree.chart.servlet.*" %>
<%@page import = "java.io.*" %>
<%@page import = "java.net.*" %>
<%@page import = "javax.servlet.http.*" %>

<% 
    CategoryDataset dataset = (CategoryDataset)request.getAttribute("dataset");
    JFreeChart chart = ChartFactory.createBarChart3D("My 3D Bar Chart", "My X axis", "My Y Axis", dataset, PlotOrientation.VERTICAL, true, false, false);
    response.setContentType("image/jpeg");
    ServletOutputStream objSos = response.getOutputStream(); 
    ChartUtilities.writeChartAsJPEG(objSos, chart, 600, 400);
%>
And the error i get which i do not know what's is wrong...

Code: Select all

java.lang.IllegalStateException
	org.apache.jasper.runtime.ServletResponseWrapperInclude.getOutputStream(ServletResponseWrapperInclude.java:62)
	org.apache.jsp.pie_005fpage_jsp._jspService(pie_005fpage_jsp.java:67)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	org.apache.jsp.piecharttemp_jsp._jspService(piecharttemp_jsp.java:48)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	org.apache.jsp.piechart_jsp._jspService(piechart_jsp.java:42)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
	Servlet.BarTest.dispatchView(BarTest.java:29)
	Servlet.BarTest.doPost(BarTest.java:47)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

Locked