| |
众所都知见于安全性考虑,applet在ie、netscape中没有写入文件的能力,包括本地、服务器文件。那么我们怎样才能实现一些数据的保留呢?(象本程序代码中记录积分的功能)。
一个方法是通过服务器端的servlet写入文件,applet端的代码如下:
private void send(){ message=score+"#"+tf.gettext (); showstatus("message send"); string querystring="/servlet/javaduke.servlet.saveservlet?message="+ urlencoder.encode(message); p("attempting to send:"+message); try{ connect=(new url(chaturl,querystring)).openconnection(); showstatus("打开连接"); showstatus(connect.tostring ()); system.out.println("open connection"); connect.setdefaultusecaches(false); connect.setusecaches (false); connect.setdoinput (true); connect.setdooutput(false); system.out.println("dooutput false"); connect.connect(); system.out.println("open stream"); p("made connection to"+connect); showstatus("试图连接、读取回应"); inputstreamreader reader=new inputstreamreader(connect.getinputstream ()); bufferedreader in=new bufferedreader(reader); message=in.readline (); while(message!=null){ tf.settext(message); message=in.readline (); } showstatus("对话成功"); } catch(malformedurlexception e2){ system.err.println ("malformedurlexception!"); e2.printstacktrace (system.err ); showstatus("malformedurlexception"); } catch(ioexception e1){ system.err.println ("ioexception"); e1.printstacktrace (system.err); showstatus(e1.tostring ()); } } server端代码如下! servlet写入文件(www.mycgiserver.com调试成功)
import javax.servlet.http.*; import java.io.*; import java.util.*;
public class saveservlet extends httpservlet { string counter,counter2; //initialize global variables public void init(servletconfig config) throws servletexception { super.init(config); } //service the request public void service(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
file file=new file("/members/yourid/servlet/gamelog.txt"); randomaccessfile raf; if(!file.exists()){ raf=new randomaccessfile(file,"rw"); counter="210#javaduke "; raf.seek(0); raf.writebytes(counter); raf.close(); } else{ counter=request.getparameter("message"); raf=new randomaccessfile(file,"rw"); raf.seek(0); raf.writebytes(counter); raf.close(); } response.setcontenttype("text/html"); printwriter out = new printwriter (response.getoutputstream()); out.print("saved ok!"); out.close();
}
//get servlet information public string getservletinfo() { return "game.saveservlet information"; } }
|
|