柱状分布统计图:packagecom.xidian.servlet;
importjava.awt.Color;
importjava.awt.Font;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.axis.CategoryAxis;
importorg.jfree.chart.axis.NumberAxis;
importorg.jfree.chart.plot.CategoryPlot;
importorg.jfree.chart.plot.PlotOrientation;
importorg.jfree.chart.renderer.category.BarRenderer;
importorg.jfree.chart.title.TextTitle;
importorg.jfree.data.category.DefaultCategoryDataset;
/**
*柱状分布统计图
*@说明
*@authorcuisuqiang
*@version1.0
*@since
*/
@SuppressWarnings("serial")
publicclassParagraphsServletextendsHttpServlet{
protectedvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html");
DefaultCategoryDatasetdataTime=newDefaultCategoryDataset();
//这是一组数据
dataTime.addValue(52,"0-6","-1-1");
dataTime.addValue(86,"6-12","-1-1");
dataTime.addValue(126,"12-18","-1-1");
dataTime.addValue(42,"18-24","-1-1");
//这是一组数据
dataTime.addValue(452,"0-6","-1-2");
dataTime.addValue(96,"6-12","-1-2");
dataTime.addValue(254,"12-18","-1-2");
dataTime.addValue(126,"18-24","-1-2");
//这是一组数据
dataTime.addValue(256,"0-6","-1-3");
dataTime.addValue(86,"6-12","-1-3");
dataTime.addValue(365,"12-18","-1-3");
dataTime.addValue(24,"18-24","-1-3");
try{
DefaultCategoryDatasetdata=dataTime;
//使用ChartFactory创建3D柱状图,不想使用3D,直接使用createBarChart
JFreeChartchart=ChartFactory.createBarChart3D(
"网站时间段访问量统计",
"时间",
"访问量",
data,
PlotOrientation.VERTICAL,
true,
false,
false
);
//设置整个图片的背景色
chart.setBackgroundPaint(Color.PINK);
//设置图片有边框
chart.setBorderVisible(true);
Fontkfont=newFont("宋体",Font.PLAIN,12);//底部
FonttitleFont=newFont("宋体",Font.BOLD,25);//图片标题
//图片标题
chart.setTitle(newTextTitle(chart.getTitle().getText(),titleFont));
//底部
chart.getLegend().setItemFont(kfont);
//得到坐标设置字体解决乱码
CategoryPlotcategoryplot=(CategoryPlot)chart.getPlot();
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeCrosshairVisible(true);
categoryplot.setRangeCrosshairPaint(Color.blue);
NumberAxisnumberaxis=(NumberAxis)categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRendererbarrenderer=(BarRenderer)categoryplot.getRenderer();
barrenderer.setBaseItemLabelFont(newFont("宋体",Font.PLAIN,12));
barrenderer.setSeriesItemLabelFont(1,newFont("宋体",Font.PLAIN,12));
CategoryAxisdomainAxis=categoryplot.getDomainAxis();
/*------设置X轴坐标上的文字-----------*/
domainAxis.setTickLabelFont(newFont("sans-serif",Font.PLAIN,11));
/*------设置X轴的标题文字------------*/
domainAxis.setLabelFont(newFont("宋体",Font.PLAIN,12));
/*------设置Y轴坐标上的文字-----------*/
numberaxis.setTickLabelFont(newFont("sans-serif",Font.PLAIN,12));
/*------设置Y轴的标题文字------------*/
numberaxis.setLabelFont(newFont("宋体",Font.PLAIN,12));
/*------这句代码解决了底部汉字乱码的问题-----------*/
chart.getLegend().setItemFont(newFont("宋体",Font.PLAIN,12));
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),1.0f,
chart,500,300,null);
}catch(Exceptiones){
es.printStackTrace();
}
}
}
JSP上使用IMG图片来请求Servlet显示图片:
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
HTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
WEB.xml配置:<?xml version="1.0"encoding="UTF-8"?>
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd">
EncodingFilter
org.filter.EncodingFilter
EncodingFilter
/*
LineServlet
com.xidian.servlet.LineServlet
PillarServlet
com.xidian.servlet.PillarServlet
ParagraphsServlet
com.xidian.servlet.ParagraphsServlet
CakeServlet
com.xidian.servlet.CakeServlet
LineServlet
/LineServlet
PillarServlet
/PillarServlet
ParagraphsServlet
/ParagraphsServlet
CakeServlet
/CakeServlet
index.jsp
为了解决乱码问题,我配置了一个过滤器:packageorg.filter;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
/**
*处理乱码
*@说明
*@authorcuisuqiang
*@version1.0
*@since
*/
publicclassEncodingFilterimplementsFilter{
publicvoiddestroy(){
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
chain.doFilter(request,response);
}
publicvoidinit(FilterConfigarg0)throwsServletException{
}
}