JSP入门教程 下载本文

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”标记

17. JavaScript改变Applet状态

作者:东方一蛇/我的家

下面的例子将说明利用javascript去改变applet状态和在javascript中调用applet中的方法。 一、applet源代码(tmin_JS2.java) // Import

import java.awt.Graphics ; import java.awt.Event ;

// LiveConnect... for JavaScript // Not used... (it's more simple)

public class tmin_JS2 extends java.applet.Applet { // Variables

String str ; // Sample string... int i ; // nb change...