众所都知见于安全性考虑,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";
}
}
闽公网安备 35060202000074号