仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1662|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页设计JSP天生jpeg图片用于投票

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。js|投票
1、媒介
  本文原作者为TonyWang,该文章触及到文件的读写和jpg图片的主动天生。使用jsp+servlet的手艺,jsp挪用servlet天生图片。
2、首文件index.jsp以下:
<%--
Author:TonyWang
E-mail:lucky_tony@163.net
Date:2001-01-01
假如对程序有甚么疑问,能够和我接洽,别的程序假如有甚么bug,贫苦指出!!
--%>
<%@pagecontentType="text/html;charSet=gb2312"%>
<%
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>
<%!
publicString[]getQuestion(Strings)
{
String[]strQ=newString[4];
StringstrTemp=null;
inti;
java.io.RandomAccessFilerf=null;
try{
rf=newjava.io.RandomAccessFile(s,"r");
}catch(Exceptione)
{
System.out.println(e);
System.exit(0);
}
for(i=0;i<4;i++)
{
try{
strTemp=rf.readLine();
}catch(Exceptione){
strTemp="NoneQuestion";
}
if(strTemp==null)strTemp="NoneQuestion";
strQ[i]=strTemp;
}
returnstrQ;
}
%>
<%
Strings=null;
String[]question=newString[4];
s=request.getRealPath("question.txt");
question=getQuestion(s);
%>

<html>
<head>
<title></title>
<linkhref="CSS.css"rel="StyleSheet"type="text/css"></link>
</head>
<body>
<tablewidth="180"border="1"bordercolor="#999999">
<tr>
<tdalign=center>冰帆查询拜访</td>
</tr>
<formname=frmmethod=postaction=write.jsp>
<tr>
<td>
<%
Stringss=null;
for(inti=0;i<4;i++)
{
ss="<inputtype="radio"name="choice"value="+i+">"+
(char)(A+i)+"、"+question[i]+"<br>";
out.println(ss);
}
%>
</td>
</tr>
<tr>
<tdalign=center><inputtype=submitvalue="我投一票"></td>
</tr>
<tr>
<tdalign=center><imgsrc="/vote/servlet/VoteImage"width=150
height=100></td>
</tr>
</form>
</table>
</body>
</html>

3、写文件write.jsp
<%--
Author:TonyWang
E-mail:lucky_tony@163.net
Date:2001-01-01
假如对程序有甚么疑问,能够和我接洽,
别的程序假如有甚么bug,贫苦指出!!
--%>
<%!
publicint[]getNumber(Strings)
{
int[]mCount=newint[4];
StringstrTemp=null;
inti;
java.io.RandomAccessFilerf=null;
try{
rf=newjava.io.RandomAccessFile(s,"r");
}catch(Exceptione)
{
System.out.println(e);
System.exit(0);
}
for(i=0;i<4;i++)
{
try{
strTemp=rf.readLine();
}catch(Exceptione){
strTemp="0";
}
if(strTemp==null)strTemp="0";
mCount[i]=newInteger(strTemp).intValue();
}
returnmCount;
}
publicvoidsetNumber(Strings,int[]x)
{
try{
java.io.PrintWriterpw=newjava.io.PrintWriter(newjava.io.
FileOutputStream(s));
for(inti=0;i<4;i++){
pw.println(x[i]+"");
}
pw.close();
}catch(Exceptione){
System.out.println("Writefileerror:"+e.getMessage());
}
}
%>

<%
Stringtmp=null;
intchoice=-1;
int[]count=newint[4];
tmp=request.getParameter("choice");
if(tmp==null){
}else{
choice=newInteger(tmp).intValue();
}
/////////////
Strings=request.getRealPath("count.txt");
if(choice>=0){
count=getNumber(s);
count[choice]++;
setNumber(s,count);
}
response.sendRedirect("index.jsp");
%>
4、servlet原代码:VoteImage.java:
/*
Author:TonyWang
E-mail:lucky_tony@163.net
Date:2001-01-01
假如对程序有甚么疑问,能够和我接洽,
别的程序假如有甚么bug,贫苦指出!!
*/
importjava.io.*;
importjava.util.*;
importcom.sun.image.codec.jpeg.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.awt.*;
importjava.awt.geom.*;
importjava.awt.image.*;
publicclassVoteImageextendsHttpServlet
{
privateStringstrFile=null;
privateColorcolor[]={Color.red,Color.black,Color.orange,
Color.green};
privateintbaseAng=30;
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponse
response)
throwsServletException,IOException
{
strFile=request.getRealPath("count.txt");
float[][]xy=newfloat[4][2];
xy=getNumAndPercent(strFile);
int[]ang=newint[4];
ang[0]=(int)(xy[0][1]*360);
ang[1]=(int)(xy[1][1]*360);
ang[2]=(int)(xy[2][1]*360);
ang[3]=360-ang[0]-ang[1]-ang[2];
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
response.setContentType("image/jpeg");
ServletOutputStreamout=response.getOutputStream();
BufferedImageimage=newBufferedImage(150,100,BufferedImage.
TYPE_INT_RGB);
Graphics2Dg=(Graphics2D)image.getGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.white);
g.fillRect(0,0,150,100);
AffineTransformat=null;
Arc2Darc=null;
intfromAng=baseAng;
at=AffineTransform.getRotateInstance((-20*java.lang.Math.PI)
/180,45,37);
g.setTransform(at);
intr=6;
intdx=(int)(r*java.lang.Math.cos((baseAng+ang[0])/2.0*java.
lang.Math.PI/180));
intdy=(int)(r*java.lang.Math.sin((baseAng+ang[0])/2.0*java.
lang.Math.PI/180));
arc=newArc2D.Double(10+dx,24-dy,80,50,fromAng,ang[0],Arc2D.PIE);
g.setColor(color[0]);
g.fill(arc);
fromAng+=ang[0];
for(inti=1;i<4;i++)
{
g.setColor(color[i]);
arc=newArc2D.Double(10,24,80,50,fromAng,ang[i],Arc2D.PIE);
g.fill(arc);
fromAng+=ang[i];
if(fromAng>360)
{
fromAng-=360;
}
}
at=AffineTransform.getRotateInstance(0,arc.getCenterX(),arc.
getCenterY());
g.setTransform(at);
for(inti=0;i<4;i++){
g.setColor(color[i]);
g.fillRect(100,15*i+20,10,10);
g.drawString((char)(A+i)+"",120,15*i+20+8);
}
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponse
response)
throwsServletException,IOException
{
doGet(request,response);
}
publicsynchronizedfloat[][]getNumAndPercent(StringsFileName)
{
floatxx[][]=newfloat[4][2];
inttotalNum=0;
StringstrTemp=null;
inti=0;
java.io.RandomAccessFilerf=null;
try
{
rf=newjava.io.RandomAccessFile(sFileName,"r");
}catch(Exceptione)
{
System.out.println(e);
System.exit(0);
}
for(i=0;i<4;i++)
{
intm=0;
try{
strTemp=rf.readLine();
}catch(Exceptione){
strTemp="0";
}
if(strTemp==null)strTemp="0";
m=newInteger(strTemp).intValue();
xx[i][0]=m;
totalNum+=m;
}
if(totalNum==0)totalNum=1;
for(i=0;i<4;i++){
xx[i][1]=xx[i][0]/totalNum;
}
returnxx;
}
}
5、在index.jsp目次下创建question.txt和count.txt文件分离用来保留投
票的成绩和投票的数目,用户投票后,就修正count.txt的值。
为了对原作者暗示感激,这2个文件内容稳定化,以下:
question.txt:
Yes,Ithinkso!
No,Idontthinkso!
Sorry,Idontknowtheanswer!
count.txt:
12
9
5
9
6、目次布局:
(1)jsp文件和txt文件统一个目次
(2).java文件是servlet目次下
7、测试:
http://[server:port]/dir/index.jsp


你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。
莫相离 该用户已被删除
21#
发表于 2015-5-2 00:48:47 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
兰色精灵 该用户已被删除
20#
发表于 2015-4-24 19:34:50 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
只想知道 该用户已被删除
19#
发表于 2015-4-21 21:05:56 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
海妖 该用户已被删除
18#
发表于 2015-4-16 05:48:24 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
飘灵儿 该用户已被删除
17#
发表于 2015-4-7 20:30:24 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
爱飞 该用户已被删除
16#
发表于 2015-3-22 17:10:24 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
15#
发表于 2015-3-20 02:35:15 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
飘飘悠悠 该用户已被删除
14#
发表于 2015-3-19 17:09:58 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
透明 该用户已被删除
13#
发表于 2015-3-18 20:38:56 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
蒙在股里 该用户已被删除
12#
发表于 2015-3-11 14:58:25 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
再现理想 该用户已被删除
11#
发表于 2015-3-4 02:10:48 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
admin 该用户已被删除
10#
发表于 2015-3-3 19:09:53 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
因胸联盟 该用户已被删除
9#
发表于 2015-2-28 15:26:33 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
活着的死人 该用户已被删除
8#
发表于 2015-2-26 16:24:31 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
山那边是海 该用户已被删除
7#
发表于 2015-2-9 01:10:01 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
乐观 该用户已被删除
6#
发表于 2015-2-6 13:08:59 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
老尸 该用户已被删除
5#
发表于 2015-2-5 22:47:01 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
变相怪杰 该用户已被删除
地板
发表于 2015-2-5 18:33:55 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-30 17:05:41 | 只看该作者
是一种突破用户端机器环境和CPU
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 14:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表