int choice = -1;
int[] count = new int[4];
tmp = request.getParameter(\if (tmp==null){ } else {
choice = new Integer(tmp).intValue(); }
/////////////
String s = request.getRealPath(\if(choice>=0){
count = getNumber(s); count[choice]++; setNumber(s,count); }
response.sendRedirect(\%>
四、servlet原代码:VoteImage.java : /*
Author: Tony Wang
E-mail: lucky_tony@163.net Date: 2001-01-01
如果对程序有什么疑问,可以和我联系, 另外程序如果有什么bug,麻烦指出!! */
import java.io.*; import java.util.*;
import com.sun.image.codec.jpeg.*; import javax.servlet.*; import javax.servlet.http.*; import java.awt.*;
import java.awt.geom.*; import java.awt.image.*;
public class VoteImage extends HttpServlet {
private String strFile = null;
private Color color[]={Color.red,Color.black,Color.orange, Color.green};
private int baseAng = 30;
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
strFile = request.getRealPath(\float[][] xy = new float[4][2];
xy = getNumAndPercent(strFile); int[] ang = new int[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(\response.setDateHeader(\response.setContentType(\
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(150,100,BufferedImage. TYPE_INT_RGB);
Graphics2D g=(Graphics2D)image.getGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(Color.white); g.fillRect(0,0,150,100); AffineTransform at = null; Arc2D arc = null;
int fromAng = baseAng;
at = AffineTransform.getRotateInstance((-20*java.lang.Math.PI) /180,45,37);
g.setTransform(at); int r =6;
int dx = (int)(r*java.lang.Math.cos((baseAng+ang[0])/2.0*java. lang.Math.PI/180));
int dy = (int)(r*java.lang.Math.sin((baseAng+ang[0])/2.0*java. lang.Math.PI/180));
arc = new Arc2D.Double(10+dx,24-dy,80,50,fromAng,ang[0],Arc2D.PIE); g.setColor(color[0]); g.fill(arc);
fromAng+=ang[0]; for (int i=1;i<4;i++) {
g.setColor(color[i]);
arc = new Arc2D.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 (int i=0;i<4;i++){ g.setColor(color[i]);
g.fillRect(100,15*i+20,10,10);
g.drawString((char)('A'+i)+\}
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); }
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
doGet(request,response); }
public synchronized float[][] getNumAndPercent(String sFileName) {
float xx[][] = new float[4][2]; int totalNum = 0 ; String strTemp = null; int i = 0;
java.io.RandomAccessFile rf = null; try {
rf = new java.io.RandomAccessFile (sFileName,\} catch(Exception e) {
System.out.println(e); System.exit(0); }
for (i=0;i<4;i++) {
int m=0; try {
strTemp = rf.readLine(); } catch (Exception e){ strTemp = \}
if (strTemp == null) strTemp = \m = new Integer(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; }
return xx; } }
五、在index.jsp目录下建立question.txt和count.txt文件分别用来保存投 票的问题和投票的数量,用户投票后,就修改count.txt的值。 为了对原作者表示感谢,这2个文件内容不变化,如下: question.txt: Yes,I think so! No,I dont think so!
Sorry,I dont know the answer! count.txt: 12 9 5 9
六、目录结构:
(1)jsp文件和txt文件同一个目录 (2).java文件是servlet目录下 七、测试:
http://[server:port]/dir/index.jsp
16. Applet调用JavaScript函数
作者:东方一蛇/我的家
下面的例子将说明在applet中去调用javascript函数 。 一、applet源代码(tmin_JS.java) // Importations
import java.awt.Graphics ; import java.awt.Event ;
// LiveConnect... for JavaScript
import netscape.javascript.JSObject ;
public class tmin_JS extends java.applet.Applet { // Variables
// Initialisation de l'applet
public void init() { // Methode init() }
// Dessiner l'applet
public void paint(Graphics g) { // Methode paint() g.drawString(\}
// Mouse down
public boolean mouseDown(Event e, int x, int y) { try { // create JSObject
JSObject.getWindow (this).eval (\rt('tmin_JS click \
\ }
catch (Exception ex) { // Error on create JSObject showStatus( \}
return true ; } }
二、注意的地方
(1)在调用javascipt函数的时候,要加这行: JSObject.getWindow (this).eval (\ (2)要将JSObject引用进来:
import netscape.javascript.JSObject ;
(3)定义applet的时候要加“MAYSCRIPT”标记