package com.servlet;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
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.ChartRenderingInfo;
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.entity.StandardEntityCollection;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.labels.StandardPieToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.TextAnchor;
import com.dao.AreaDao;
import com.dao.OptionDao;
import com.valuebean.AreaBean;
import com.valuebean.OptionBean;
/*************************************
版权所有: 吉林省明日科技有限公司
完成日期: 2010-09-15
项目出处: 编程词典
服务社区: www.mingribook.com
学习社区: www.mrbccd.com
*************************************/
public class VoteServlet extends HttpServlet{
private int width=0;
private int height=0;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
width=0;
height=0;
String servletPath=request.getServletPath();
if("/vote".equals(servletPath))
vote(request,response);
else if("/showresult".equals(servletPath))
showresult(request,response);
}
private void vote(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String message="";
String showpage="";
int optionid=Integer.parseInt(request.getParameter("movie"));
int i=new OptionDao().vote(optionid);
if(i<=0){
message="× 投票失败!";
showpage="fail.jsp";
}
else{
HttpSession session=request.getSession();
session.setMaxInactiveInterval(3600);
session.setAttribute("ido","yes");
showpage="success.jsp";
}
request.setAttribute("message",message);
RequestDispatcher rd=request.getRequestDispatcher(showpage);
rd.forward(request,response);
}
protected void showresult(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String forward="";
Map args=getParams(request);
String action=(String)args.get("action");
String method=(String)args.get("method");
String showmode=(String)args.get("showmode");
JFreeChart chart=null;
if("pie".equals(showmode)) //绘制饼型图
chart=getChartForPie(action,method);
else //绘制柱型图
chart=getChartForBar(action,method);
if(chart!=null){
myplot(showmode,chart); //设置各标签的显示样式
String webName=getServletContext().getRealPath("/plot");
String prefix=action+"_"+method+"_"+showmode;
String picpath=webName+"/"+prefix+".jpg"; //图片文件路径
String mappath=webName+"/"+prefix+".map"; //热区文件路径
FileOutputStream plot_fos=new FileOutputStream(picpath);
PrintWriter map_pw =new PrintWriter(mappath);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
ChartUtilities.writeChartAsJPEG(plot_fos,0.8f,chart,width,height,info); //生成图片文件
ChartUtilities.writeImageMap(map_pw, "mymap", info,false); //生成热区文件
plot_fos.close();
map_pw.close();
request.setAttribute("path",prefix);
forward="/showresult.jsp";
}
else{
request.setAttribute("message","●您所查看的时间段中没有数据!");
forward="/fail.jsp";
}
RequestDispatcher rd=request.getRequestDispatcher(forward);
rd.forward(request,response);
}
private Map getParams(HttpServletRequest request){
HttpSession session=request.getSession();
String action=request.getParameter("action"); //获取进行统计的对象:option- 统计各选项的得票数; area - 统计各省的投票数
String method=request.getParameter("method"); //获取统计数据的方法:all - 全部; day - 日统计;month - 月统计
String showmode=request.getParameter("showmode"); //获取显示结果的方式:var - 柱状图; pie - 饼型图
//统计的对象
if(action==null||action.equals("")||(!action.equals("option")&&!action.equals("area")))
action=(String)session.getAttribute("action");
else
session.setAttribute("action",action);
//统计的方法
if(method==null||method.equals("")||(!method.equals("all")&&!method.equals("day")&&!method.equals("month")))
method=(String)session.getAttribute("method");
else
session.setAttribute("method", method);
//显示的方式
if(showmode==null||showmode.equals("")||(!showmode.equals("bar")&&!showmode.equals("pie")))
showmode=(String)session.getAttribute("showmode");
else
session.setAttribute("showmode", showmode);
if(action==null||action.equals("")||!action.equals("area"))
action="option";
if(method==null||method.equals("")||(!method.equals("day")&&!method.equals("month")))
method="all";
if(showmode==null||showmode.equals("")||!showmode.equals("pie"))
showmode="bar";
HashMap args=new HashMap();
args.put("action",action);
args.put("method",method);
args.put("showmode",showmode);
return args;
}
/** @功能:获取柱型图的JFreeChart */
private JFreeChart getChartForBar(String action,String method){
CategoryDataset dataset=null;
JFreeChart chart=null;
String title1="";
String title2="";
String subtitle="";
PlotOrientation way=null;
if("day".equals(method))
subtitle="-日统计(今日)";
else if("month".equals(method))
subtitle="-月统计(当前月)";
if("area".equals(action)){ //处理查看"各省的投票数"的请求
dataset = getDataSetForBarAndArea(method); //获取数据集
title1="各省所投票数图";
title2="省份";
way=PlotOrientation.HORIZONTAL;
width=500;
height=100+25*dataset.getColumnCount();
if(dataset!=null&&dataset.getColumnCount()>0){
chart = ChartFactory.createBarChart(title1,title2,"票数",dataset,way,false,true,false);
chart.addSubtitle(new TextTitle(subtitle));
}
}
else{ //处理查看"各选项得票数"的请求
dataset = getDataSetForBarAndOption(method); //获取数据集
title1="各项所得票数";
title2="选项";
way=PlotOrientation.VERTICAL;
width=80+50*dataset.getColumnCount();
height=400;
if(dataset!=null&&dataset.getColumnCount()>0){
chart = ChartFactory.createBarChart3D(title1,title2,"票数",dataset,way,false,true,false);
chart.addSubtitle(new TextTitle(subtitle));
}
}
return chart;
}
private CategoryDataset getDataSetForBarAndOption(String method) {
OptionDao optionDao=new OptionDao();
List options=null;
if("all".equals(method))
options=optionDao.getOptions();
else if("day".equals(method))
options=optionDao.getOptionsForDay();
else if("month".equals(method))
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java Web开发之道 光盘源码2 (626个子文件)
fenlan2.bak 17KB
subReport.bak 13KB
_18.cfs 19KB
VoteServlet.class 12KB
Dao.class 10KB
UserInfoServlet.class 8KB
FileXLoad.class 8KB
WordXMLModel.class 7KB
MyFileServlet.class 7KB
MyFileServlet.class 7KB
ConnDB.class 6KB
PictureCheckCode.class 6KB
WordServlet.class 6KB
UserInfoForm.class 6KB
WordXMLServlet.class 6KB
WordDao.class 5KB
PageBar.class 5KB
ConnDB.class 5KB
UserInfoAction.class 5KB
UserInfoForm.class 5KB
VoteLimitFilter.class 5KB
PageBar.class 5KB
PictureCheckCode.class 5KB
PictureCheckCode.class 4KB
Ysbb.class 4KB
OperationServlet.class 4KB
UserInfoDao.class 4KB
PictureCheckCode.class 4KB
NewsServlet.class 3KB
SearchForm.class 3KB
OptionDao.class 3KB
File.class 3KB
FileDao.class 3KB
FileDao.class 3KB
LogXServlet.class 3KB
UserXMLModel.class 3KB
LogXServlet.class 3KB
UserInfoDao.class 3KB
AbleFilter.class 3KB
DB.class 3KB
DB.class 3KB
DB.class 3KB
DB.class 3KB
JDBConnection.class 3KB
AbleFilter.class 3KB
AreaDao.class 3KB
UserInfoDao.class 3KB
JDBConnection.class 3KB
JDBConnection.class 3KB
JDBConnection.class 2KB
UserInfoAction.class 2KB
JDBConnection.class 2KB
LoginFilter.class 2KB
LoginFilter.class 2KB
SubmitFilter.class 2KB
SubmitFilter.class 2KB
SuperDao.class 2KB
Encrypt.class 2KB
FileBean.class 2KB
FileBean.class 2KB
Encrypt.class 2KB
SubmitFilter.class 2KB
StringHandler.class 2KB
UserInfo.class 2KB
StringHandler.class 2KB
VoterDao.class 2KB
Parameters.class 2KB
Encode.class 2KB
StringHandler.class 2KB
Encrypt.class 2KB
StringHandler.class 1KB
Net.class 1KB
Order.class 1KB
UserInfoTrace.class 1KB
UserDao.class 1KB
Dao.class 1KB
DownTable.class 1KB
InputGoAction.class 1KB
NewsInfo.class 1KB
IndexServlet.class 1KB
UserInfoList.class 1KB
StringTrans.class 1KB
CharacterEncodingFilter.class 1KB
CharacterEncodingFilter.class 1KB
CharacterEncodingFilter.class 1KB
CharacterEncodingFilter.class 1KB
PDFParagraph.class 1KB
Word.class 1KB
WordBean.class 1KB
Goods.class 1KB
WordBean.class 1KB
StringHandler.class 1KB
AreaBean.class 1KB
OptionBean.class 1KB
CheckOutData.class 1KB
UserBean.class 1KB
UserBean.class 1KB
EncodingListener.class 994B
SelfRequestProcessor.class 924B
GoodType.class 725B
共 626 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
- 風缘2013-01-13课程设计全靠它了,恩直接导入就可用了很好
- heivy2023-02-06下载的是一个叫 实用课程 的系统代码,而标题是 Java Web开发之道 这本书
- fyzzzzzx2013-06-26课程设计全靠它了,恩直接导入就可用了很好
- Alvin_Geng2013-09-26直接导入就可用了很好
JANESTAR
- 粉丝: 71
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功