基于JSP的在线图片投票系统含源文件.docx
《基于JSP的在线图片投票系统含源文件.docx》由会员分享,可在线阅读,更多相关《基于JSP的在线图片投票系统含源文件.docx(44页珍藏版)》请在冰豆网上搜索。
基于JSP的在线图片投票系统含源文件
基于JSP的在线图片投票系统
简介:
关于这个系统,由于时间比较短所以做得很粗糙,界面设计什么的也做得很一般,旨在给大家做个参考,大家共同学习,共同进步。
这个系统的主要功能是实现自主上传图片,以及投票柱状图显示。
我是使用的netbeans7.2作为开发工具的,主要涉及到两个插件SmartUpload和JfreeChart,一个用来实现上传,一个用来绘制图表。
我这里讲到的上传只是最简单的实现上传,很多功能都没有讲到,目的只是为了让大家了解一下。
网上也有很多关于SmartUpload的组件的介绍和代码,但大多都写得很复杂,且很难直接运行实现,这就导致我们容易急切烦躁,明明只是一个上传功能却怎么也运行不了,如果连基本的上传都做不到怎么学习接下来的功能,如果只是了解不能运行,即使知道再多也枉然!
首先,我们介绍一下SmartUpload:
在使用SmartUpload之前先去网上下一个SmartUpload的jar包,将他导入项目库内,然后再在项目页面中用import直接引用就行。
<%@pagecontentType="text/html;charset=gb2312"language="java"
import="java.sql.*,java.util.*,com.jspsmart.upload.*,java.io.*,java.awt.Image,java.awt.image.*,java.util.*"errorPage=""%>
SmartUploadsu=newSmartUpload();//定义一个对象
su.initialize(pageContext);//初始化
su.upload();//上传,这一句必不可少,这是上传的核心,这是将文件上传到项目中而下一句则是把已经上传到项目中的文件保存到指定文件夹内
intcount=su.save("/upload");//保存到文件夹upload,必须在项目中创建此文件夹,至于在哪创建,可以根据getContextPath()来获取创建的地址。
这个语句返回的是个int型,表示成功上传的文件数。
文件的上传其实就只有这短短的几行代码而已,至于其他功能就需要大家自己去学习了,比如限制上传类型,文件转存,获取文件地址,文件下载等!
Jfreechart:
同理,也需要一个Jfreechart的jar包,才能实现图表显示功能,在本系统中实现的是结果柱状图显示,故在此处介绍一下柱状图的制作。
在制作图表之前必须先在web.xml中配置一下
1.
2. DisplayChart
3. org.jfree.chart.servlet.DisplayChart
4.
5.
6. DisplayChart
7. /servlet/DisplayChart
8.
<%@pagecontenttype="text/html;charset=gbk"%>
<%@pageimport="org.jfree.chart.chartfactory,
org.jfree.chart.jfreechart,
org.jfree.chart.plot.plotorientation,
org.jfree.chart.servlet.servletutilities,
org.jfree.data.defaultcategorydataset"%>
<%
defaultcategorydatasetdataset=newdefaultcategorydataset();
dataset.addvalue(300,"广州","苹果");
dataset.addvalue(200,"广州","梨子");
dataset.addvalue(500,"广州","葡萄");
dataset.addvalue(340,"广州","芒果");
dataset.addvalue(280,"广州","荔枝");
jfreechartchart=chartfactory.createbarchart3d("水果销量统计图",
"水果",
"销量",
dataset,
plotorientation.vertical,
false,
false,
false);
stringfilename=servletutilities.savechartaspng(chart,500,300,null,session);
stringgraphurl=request.getcontextpath()+"/servlet/displaychart?
filename="+filename;
%>
"width=500height=300border=0usemap="#<%=filename%>">
复杂一点的特性图,可以参照
也可以使每根柱子的颜色各不相同,下面代码包含了中文乱码的解决方法
pagecontentType="text/html;charset=UTF-8"%>
<%@pageimport="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.CategoryDataset,
org.jfree.data.general.DatasetUtilities,
org.jfree.chart.plot.*,
org.jfree.chart.labels.*,
org.jfree.chart.renderer.category.BarRenderer3D,
java.awt.*,
org.jfree.ui.*,
org.jfree.chart.axis.AxisLocation,
org.jfree.chart.title.TextTitle,
org.jfree.chart.axis.CategoryAxis,
org.jfree.chart.axis.NumberAxis,
org.jfree.data.category.DefaultCategoryDataset"%>
<%
double[][]data=newdouble[][]{{300},{200},{500},{340},{300}};
String[]rowKeys={"苹果","梨子","葡萄",",芒果","荔枝"};
String[]columnKeys={""};
CategoryDatasetdataset=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);
JFreeChartchart=ChartFactory.createBarChart3D("","水果","销售",dataset,PlotOrientation.VERTICAL,true,true,true);
////////////////////////解决中文码//////////////////////////////////////////////////////////////
CategoryPlotplot=chart.getCategoryPlot();//获取图表区域对象
Fontfont=newFont("宋体",Font.BOLD,16);//设置字体,否则出现中文乱码;
TextTitletitle=newTextTitle("水果销量图统计",font);//设置标题
TextTitlesubtitle=newTextTitle("温轩辕",newFont("黑体",Font.BOLD,12));//设置副标题
chart.addSubtitle(subtitle);//副标题
chart.setTitle(title);//标题
CategoryAxisdomainAxis=plot.getDomainAxis();//获得横坐标
NumberAxisnumberaxis=(NumberAxis)plot.getRangeAxis();//获得纵坐标
domainAxis.setTickLabelFont(newFont("sans-serif",Font.PLAIN,11));//设置X轴坐标上的文字
domainAxis.setLabelFont(newFont("宋体",Font.PLAIN,12));//设置X轴的标题文字
numberaxis.setTickLabelFont(newFont("sans-serif",Font.PLAIN,12));//设置Y轴坐标上的文字
numberaxis.setLabelFont(newFont("黑体",Font.PLAIN,12));//设置Y轴的标题文字
chart.getLegend().setItemFont(newFont("宋体",Font.PLAIN,12));//解决了底部汉字乱码
/////////////////////////////////解决中文乱码///////////////////////////////////////////////////
plot.setBackgroundPaint(Color.white);//设置网格背景颜色
plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
BarRenderer3Drenderer=newBarRenderer3D();//显示每个柱的数值,并修改该数值的字体属性
renderer.setBaseItemLabelGenerator(newStandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:
此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(newItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
renderer.setItemLabelFont(newFont("宋体",Font.PLAIN,12));
renderer.setItemLabelsVisible(true);
renderer.setItemMargin(0.3);//设置平行柱的之间距离
plot.setRenderer(renderer);//设置销量的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);//将下方的“水果”放到上方
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);//将默认放在左边的“销量”放到右方
Stringfilename=ServletUtilities.saveChartAsPNG(chart,700,400,null,session);//设置图片的宽度和高度
StringgraphURL=request.getContextPath()+"/DisplayChart?
filename="+filename;
%>
"width=700height=400border=0usemap="#<%=filename%>">
下面就是投系统的代码和图示(注:
其中的图片和背景都是自己找的,代码中只含有图片的路径,和名称,粘贴代码不能得出所示的效果图)
1.主页面(HOMEPAGE.jsp)
<%@pagecontentType="text/html"pageEncoding="UTF-8"%>
DOCTYPEhtml>
网上选票系统
h1,h2,h3,h4,h5,h6{display:
inline;}
.test{
font-size:
40px;
color:
#FFD700;
font-style:
italic;
}
.red{
font-size:
30px;
color:
#FF0000;
font-style:
inherit;
}
网上在线
图片投票系统
活动细则
1.对动漫有强烈爱好者都可报名参与比赛!
2.凡是参赛者必须上传一张你认为最美的动漫图片
3.每位参赛者都且仅有一张选票,可投给心目中最美的动漫图片
4.一台电脑只允许投一张票
5.点击下方火影图片立即参与投票
6.点击下方死神图片立即报名参与比赛
7.点击下方海贼图片进入管理员登陆界面
8.活动截止日期2013年7月13日