import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import com.bjsxt.util.ChartUtil;
/**
* 后台程序
* img 标签中的src属性的值 需要在作用域中获取
* 将img标签中src属性的值存放到作用域中
* @author zhangpanpan
*
* servlet{
* 1.配置 Anno 注解 出错 webserive
* 2.extends HttpServlet
* 3.重写service方法
* 4.设置编码集合
*/
@WebServlet("/rf")
public class PieServlet extends HttpServlet{
/**
* 定义其版本号
*/
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置编码格式 set 设置 get 获取 remove 删除
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取作用域
HttpSession session=request.getSession();
//需要饼图,饼图还需要存放数据
JFreeChart chart=createPieChart(createPieDs());
System.out.println("chart:"+chart);
//将img标签中src属性的值存放到作用域中 图片的路径
//获取图片的名称
String fileName=ServletUtilities.saveChartAsPNG(chart, 600,500,session);
System.out.println(fileName);
//url地址
String graphURL=request.getContextPath()+"/dc?filename="+fileName;
//存放作用域
session.setAttribute("graphURL", graphURL);
//跳转页面
request.getRequestDispatcher("index.jsp").forward(request,response);
}
/**
* 创建饼图对象
* @param createPieDs
* @return
*/
private JFreeChart createPieChart(PieDataset createPieDs) {
JFreeChart chart=ChartFactory.createPieChart("从事行业分析",createPieDs,true, true, false);
//美化
ChartUtil.beautifulPieChart(chart);
return chart;
}
/**
* 用来给创建的饼图对象提供数据
* @returnv 存放数据
*/
private PieDataset createPieDs() {
//创建默认的数据集合
DefaultPieDataset dataset=new DefaultPieDataset();
//给dataset对象中存放数据
dataset.setValue("IT与通讯业",15);
dataset.setValue("房地产",25);
dataset.setValue("金融证券",8);
dataset.setValue("商贸业",12);
dataset.setValue("医药食品业",8);
dataset.setValue("石油化工业",12);
dataset.setValue("旅游交通",7);
dataset.setValue("其他",13);
return dataset;
}
}
<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>/dc</url-pattern>
</servlet-mapping>