`
niulanshan
  • 浏览: 564104 次
文章分类
社区版块
存档分类
最新评论

简易的网上投票系统(Struts2+JFreeChart)

 
阅读更多

1、该系统所用到的技术有:

(1)Struts2.x

(2)JFreeChart

2、该系统的文件结构如下图所示:


3、源码如下:

(1)JSP页面源码

SelectVote.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	

  </head>
  
  <body style="background-color: #6FBACD; width: 50%; height: 50%;">
    <h1><font color="blue">请选择自己的兴趣爱好:</font></h1>
    <s:form action="chartResult">
       <s:checkbox name="interest" label="篮球" fieldValue="basketball" labelposition="center"></s:checkbox>
       <s:checkbox name="interest" label="足球" fieldValue="football" labelposition="center"></s:checkbox>
       <s:checkbox name="interest" label="网球" fieldValue="tennis" labelposition="center"></s:checkbox>
       <s:checkbox name="interest" label="羽毛球" fieldValue="yumiaoqiu" labelposition="center"></s:checkbox>
       <s:checkbox name="interest" label="登山" fieldValue="dengshan" labelposition="center"></s:checkbox>
       <s:checkbox name="interest" label="游泳" fieldValue="swim" labelposition="center"></s:checkbox>
       <s:checkbox name="interest" label="围棋" fieldValue="weiqi" labelposition="center"></s:checkbox>
       <s:submit value="提交" labelposition="center"></s:submit>
    </s:form>
  </body>
</html>

(2)Action源码

ChartResultAction.java:

/**
 * @Title:ChartResultAction.java
 * @Package:com.you.action
 * @Description:
 * @author:Youhaidong(游海东)
 * @date:2013-7-28 上午10:55:26
 * @version V1.0
 */
package com.you.action;

import java.awt.Color;
import java.awt.Font;
import java.util.List;
import java.util.Map;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 类功能说明
 * 类修改者 修改日期
 * 修改说明
 * <p>Title:ChartResultAction.java</p>
 * <p>Description:游海东个人开发</p>
 * <p>Copyright:Copyright(c)2013</p>
 * @author:游海东
 * @date:2013-7-28 上午10:55:26
 * @version V1.0
 */
public class ChartResultAction extends ActionSupport {

	/**
	 * @Fields  serialVersionUID:序列化
	 */
	private static final long serialVersionUID = 1L;
	
	//创建chart属性
	private JFreeChart chart;
	
	//创建interest属性
	private List<String> interest;
	
	public JFreeChart getChart(){
		
		//创建JFreeChart对象
		chart = ChartFactory.createBarChart("兴趣爱好统计分布图", "兴趣爱好", "统计次数", this.getDataset(), 
				PlotOrientation.VERTICAL, true, true, false);
		//设置标题
		chart.setTitle(new TextTitle("兴趣爱好统计", new Font("黑体",Font.BOLD,20)));
		//获取CategoryPlot对象
		CategoryPlot categoryPlot = (CategoryPlot)chart.getPlot();
		//设置X,Y轴围起来的面板的颜色
		categoryPlot.setBackgroundPaint(Color.LIGHT_GRAY);
		//获取水平轴
		CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
		//设置水平轴标签的字体
		categoryAxis.setLabelFont(new Font("宋体",Font.BOLD,20));
		//设置水平轴标签的倾斜度
		categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);
		//设置X轴的标题文字
		categoryAxis.setLabelFont(new Font("宋体",Font.BOLD,20));  
		//设置X轴坐标上的文字
        categoryAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));
		//设置水平轴标签的背景色
		categoryPlot.setDomainGridlinePaint(Color.BLUE);
		//获取竖直轴
		NumberAxis numberAxis = (NumberAxis)categoryPlot.getRangeAxis();
		//设置Y轴坐标上的文字
		numberAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20)); 
		//设置Y轴的标题文字
		numberAxis.setLabelFont(new Font("宋体",Font.BOLD,20));
		//解决Legend乱码问题  
        LegendTitle legendTitle = chart.getLegend(0);
        //设置Legend的字体
        legendTitle.setItemFont(new Font("宋体",Font.BOLD,20));  
          
		return chart;
	}

	/* (non-Javadoc)
	 * <p>Title:execute</p>
	 * <p>Description:</p>
	 * @return
	 * @throws Exception
	 * @see com.opensymphony.xwork2.ActionSupport#execute()
	 */
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
	
	//创建实现每次请求的increaseResult()方法
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private void increaseResult(List<String> list){
		
		//返回ActionContext实例
		ActionContext content = ActionContext.getContext();
		//获取Application
		Map map = content.getApplication();
		//遍历传入的请求参数list
		for(String str : list)
		{
			//判断选中的选项
			if(null == map.get(str))
			{
				map.put(str, 1);
			}else{
				map.put(str, (Integer)map.get(str) + 1);
			}
			
		}
	}
	
	//创建图像的数据集
	@SuppressWarnings("rawtypes")
	private CategoryDataset getDataset(){
		
		//创建数据集
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		//处理当前的请求
		this.increaseResult(this.getInterest());
		//获取ActionContext实例
		ActionContext content = ActionContext.getContext();
		//获取Application对象
		Map map = content.getApplication();
		//为数据集中添加数值
		dataset.setValue((Integer)map.get("basketball"), "篮球", "篮球");
		dataset.setValue((Integer)map.get("football"), "足球", "足球");
		dataset.setValue((Integer)map.get("tennis"), "网球", "网球");
		dataset.setValue((Integer)map.get("yumiaoqiu"), "羽毛球", "羽毛球");
		dataset.setValue((Integer)map.get("dengshan"), "登山", "登山");
		dataset.setValue((Integer)map.get("swim"), "游泳", "游泳");
		dataset.setValue((Integer)map.get("weiqi"), "围棋", "围棋");
		return dataset;
				 
	}

	/**
	 * @return the interest
	 */
	public List<String> getInterest() {
		return interest;
	}

	/**
	 * @param interest the interest to set
	 */
	public void setInterest(List<String> interest) {
		this.interest = interest;
	}

	/**
	 * @param chart the chart to set
	 */
	public void setChart(JFreeChart chart) {
		this.chart = chart;
	}

}

(3)struts.xml配置文件

<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

    <package name="struts2" extends="jfreechart-default">
        <action name="chartResult" class="com.you.action.ChartResultAction">
            <result name="success" type="chart">
                <param name="width">1300</param>
                <param name="height">600</param>
            </result>
        </action>
    </package>

</struts>

4、运行结果如下

(1)在浏览器地址栏输入:http://localhost:8080/votesystem/SelectVote.jsp,运行结果如下图:


(2)选择自己的兴趣爱好,点“提交”按钮


(3)当第二个人进入该系统,选择了自己的兴趣爱好,点击提交(以后进入系统的人都依次这样选择)

a、选择自己的兴趣爱好

b、点击提交之后


分享到:
评论

相关推荐

    投票系统JSP +JavaBean+Struts2+JDBC+JFreeChart

    这是一个获取用户信息的投票系统,包含需求及代码,可以了解投票系统的基本需求,如何分析和设计数据库、使用JSP +JavaBean+Struts2+JDBC+JFreeChart进行开发、学会MySQL数据库的基本使用、使用JFreeChart画柱状图、...

    投票系统 struts2+JFreechart

    知识点:struts2,struts2模型驱动,Java反射,struts2插件使用,struts2与JFreeChart的集成开发,JFreeChart图表 1、开发环境:MyEclipse6.0, Struts 2.0.11, JFreeChart 1.0.9, JCommon 1.0.12,struts2-jfreechart...

    struts2+jfreechart

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的开源库。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的...

    投票系统 jsp+javabean+struts+jdbc+jfreechart

    这是个 jsp+javabean+struts+jdbc+jfreechart 完整的java 投票系统 项目源码 可以直接导入没有eclipse、myeclipse。内附数据库文件 mysql版,也可改成其它数据库, 换对应数据库连接驱动和修改sql语法即可

    struts2 + jfreechart demo

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架和技术。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建结构化的Web应用程序,而JFreeChart是一个开源图表库,能够生成各种高质量的图表...

    Struts+jfreeChart整合

    Struts+jfreeChart整合注意事项以及代码实现

    JFreeChart(Struts1+jFreeChart)

    标题 "JFreeChart(Struts1+jFreeChart)" 提到的是在Struts1框架中集成JFreeChart库进行图表展示的技术。JFreeChart是一个强大的Java库,它提供了多种图表类型,如柱状图、饼图、线图、散点图等,用于数据可视化。而...

    spring+struts2+hibernate+ajax+jfreechart 广告管理系统

    《构建基于Spring、Struts2、Hibernate、Ajax与JFreeChart的广告管理系统》 在现代企业信息化建设中,广告管理系统的开发是至关重要的,它能够有效地整合广告资源,提高工作效率,减少人工操作错误。本系统利用了...

    Struts2+JFreeChart开发所用Jar包

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架和库。Struts2是一种基于MVC设计模式的开源框架,用于构建企业级Web应用程序,而JFreeChart则是一个强大的图表生成库,能够创建各种类型的图表,如饼图、...

    Struts2 + jfreechart

    Struts2 和 JFreeChart 是两个在 Java 开发领域中常用的工具,它们分别负责Web应用程序的框架构建和数据可视化。Struts2 是一个强大的MVC(Model-View-Controller)框架,而 JFreeChart 是一个Java库,用于生成各种...

    struts2+JFreeChart

    无论是监控系统性能、报表展示还是数据分析,Struts2和JFreeChart都是Java开发者的得力助手。不过,需要注意的是,在实际应用中要关注性能优化,避免因生成大量图表导致服务器负载过高。同时,应遵循良好的编程实践...

    struts2+JFreeChart整合

    Struts2和JFreeChart的整合是Web应用开发中一种常见的技术组合,主要用于创建动态、交互式的图表展示。Struts2是一个强大的MVC(模型-视图-控制器)框架,而JFreeChart则是一个用于Java的开源图表库,能够生成各种...

    Struts2+JFreeChart+饼状图,柱状图,折线图

    总结一下,"Struts2+JFreeChart+Myeclipse实现饼状图,柱状图,折线图"这一主题涉及到以下几个关键知识点: 1. Struts2框架的基本概念和MVC设计模式。 2. JFreeChart库的使用,包括创建数据集、生成图表以及转换为...

    Struts2+JFreeChart 柱状图Demo

    Struts2+JFreeChart 柱状图Demo是一个典型的Java Web应用程序,它结合了Struts2框架、JFreeChart库以及可能的数据存储系统(如MySQL或Oracle),用于动态生成柱状图表。这个Demo旨在展示如何在实际项目中集成这些...

    投票系统struts2.0+hibernate3.2+spring2.5+sqlserver2005数据库,+JFReeChart饼图,柱状图显示。

    整个系统的工作流程大致如下:用户通过Web界面发起投票请求,请求经过Struts2的拦截器处理并转发到对应的Action;Action调用Service层的方法,Service层通过Hibernate操作数据库完成投票记录的添加或更新;然后,...

    投票管理系统(JSP+JFreeChart)

    在当前社会信息已经做为一种商品进行买卖,例如某牛奶品牌向调查...学会使用JSP +JavaBean+Struts2+JDBC+JFreeChart进行开发 学会MySQL数据库的基本使用 学会使用JFreeChart画柱状图 学会使用Cookie防止用户多次投票

    struts2+MySQL+jfreechart生成带热点

    Struts2、MySQL和JFreeChart是Web应用开发中常用的技术栈,它们分别负责不同的功能领域。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建更有序、可维护的Web应用程序。MySQL是一款...

    Struts2 + Spring2.5 + JFreeChart 实现的投票系统,2008年高考作文评价投票

    [原创] Struts2 + Spring2.5 + JFreeChart 实现的投票系统,2008年高考作文评价投票 该项目是一个对2008年高考作文评价投票系统,附件中的toupiao.rar是一个可以独立运行的项目,下载后把toupiao.rar改名成...

    jsp+javabean+struts2+jfreechart+eclipse投票系统.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    struts2+mysql+jfreechart

    Struts2、MySQL和JFreeChart是开发Web应用程序时常用的技术栈,它们分别负责不同的功能领域。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建动态、数据驱动的Web应用。MySQL是一种...

Global site tag (gtag.js) - Google Analytics