新建一个web 工程,发布到tomcat
新建一个Servlet,配置自动。
Servlet代码:
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
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.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.TextAnchor;
/**
* Servlet implementation class EmployeeCommServlet
*/
public class EmployeeCommServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
try{
double[][] data = new double[][] {{1320}, {720}, {830}, {400}, {1000}, {1500}};
String[] rowKeys = {"201201", "201202", "201203", "201204", "201205", "201206"};
String[] columnKeys = {""};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("2012上半年佣金",
"年月","佣金",dataset,
PlotOrientation.VERTICAL,
true,
false,
false);
//设置标题字体,可以处理乱码问题
chart.getTitle().setFont(new Font("宋体", Font.BOLD,12));
CategoryPlot plot = chart.getCategoryPlot();
//X轴
CategoryAxis domainAxis = plot.getDomainAxis();
//设置设置Y轴上的文字
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
//设置Y轴的标题文字
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
//Y轴
ValueAxis numberaxis = plot.getRangeAxis();
//设置设置Y轴上的文字
numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
//设置Y轴的标题文字
numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
//这句代码解决了底部汉字乱码的问题
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
//设置网格背景颜色
plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink);
//显示每个柱的数值,并修改该数值的字体属性
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
//设置每个月份所包含的多种佣金柱的之间距离,如果每个月需要分别显示多种佣金的话
//renderer.setItemMargin(0.4);
plot.setRenderer(renderer);
int width = 600;
int height= 400;
String fileName = "comm.jpeg";
String url = request.getSession().getServletContext().getRealPath("\\");
System.out.println(url);
OutputStream os = new FileOutputStream(url+fileName);
ChartUtilities.writeChartAsJPEG(os, chart, width, height);
os.flush();
if(os != null)
os.close();
request.setAttribute("pic", fileName);
request.setAttribute("width", width);
request.setAttribute("height", height);
request.getRequestDispatcher("/employee.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
}
JSP:
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Employee Commission</title>
</head>
<body>
<img src="<%=request.getAttribute("pic") %>"
width="<%=request.getAttribute("width") %>"
height="<%=request.getAttribute("height") %>" >
<p>
<a href="http://lapulande.iteye.com/blog/847961" target="_blank">参考文档一</a><br><br>
<a href="http://www.jfree.org/jfreechart/" target="">JFree官方学习网</a><br>
<a href="http://www.jfree.org/jfreechart/api/javadoc/index.html" target="">JFree官方API</a><br>
<a href="http://www.jfree.org/jfreechart/" target="">JFree官方学习网</a><br>
不懂多上网查
</p>
<br>
<a href="CommDetailServlet" >详细图</a>
</body>
</html>
完事了。