想使用servlet方式实现web显示饼图的功能,数据从数据库中读取。
java端程序
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
res.setContentType("image/jpeg");
DefaultPieDataset data = createDataset();
JFreeChart chart = createChart(data); ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
100,chart,400,300,null);
}
Web.xml配置:
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>但是,jsp该怎么实现显示这个饼图呢??
java端程序
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
res.setContentType("image/jpeg");
DefaultPieDataset data = createDataset();
JFreeChart chart = createChart(data); ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
100,chart,400,300,null);
}
Web.xml配置:
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>但是,jsp该怎么实现显示这个饼图呢??
看了这个估计你就知道了
import java.io.IOException;
import java.io.OutputStream;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;public class TestServlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//默认的类别数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int[] cols = new int[]{200,390,550,700,1200};
String[] rows = new String[]{"2010","2011","2012","2013","2014"};
//填充数据集
for(int i=0;i<cols.length;i++){
dataset.setValue(cols[i], "公司业绩", rows[i]+"");
}
//创建图表
JFreeChart chart = ChartFactory.createBarChart("2010-2014年来公司业绩图", "", "", dataset, PlotOrientation.VERTICAL, true, true, false);
chart.setBackgroundPaint(Color.white);//图表的背景色(通常为白色)
//获得plot(此对象通常用于绘制图表区域属性)
CategoryPlot plot = chart.getCategoryPlot();
//Axis对象通常用于设置X轴
CategoryAxis axis = plot.getDomainAxis();
//axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
//设置图表区域属性
plot.setBackgroundPaint(Color.LIGHT_GRAY);
plot.setRangeGridlinePaint(Color.white);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
OutputStream out = response.getOutputStream();
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 700, 400);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}web.xml配置如下:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>TestServlet2</servlet-name>
<servlet-class>com.servlet.TestServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet2</servlet-name>
<url-pattern>/TestServlet2</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
运行此程序需要2个jar包,分别为:jcommon.jar、jfreechart.jar,怎么运行不需要我说了吧。
1楼我没有表达清楚,抱歉。
就是在servlet方式下,java端后台程序以及web.xml我做那样的设置,jsp那边不知到怎样写来接收servlet过来的那个流。
简而言之,不知道这个jsp怎么写。