Java 序列化小程序中的对象
好的,简单地说,我正在一个java小程序中制作一个问答游戏,我想序列化一个存储高分的对象。当我这样做时,它在eclipse中工作得非常好,但在浏览器中却不行 以下是我的小程序读取文件的代码: 是的,我有所有合适的进口货Java 序列化小程序中的对象,java,serialization,applet,Java,Serialization,Applet,好的,简单地说,我正在一个java小程序中制作一个问答游戏,我想序列化一个存储高分的对象。当我这样做时,它在eclipse中工作得非常好,但在浏览器中却不行 以下是我的小程序读取文件的代码: 是的,我有所有合适的进口货 package histApplet; public class QuizApplet extends Applet { private static final String TRACKERLOC = "histApplet/track.ser"; private Stats
package histApplet;
public class QuizApplet extends Applet
{
private static final String TRACKERLOC = "histApplet/track.ser";
private StatsTracker tracker;
private int difflevel = 1;
//other instance variables
public void init()
{
//other code
if(new File(TRACKERLOC).exists())
{
tracker = null;
FileInputStream fis = null;
ObjectInputStream in = null;
try
{
fis = new FileInputStream(TRACKERLOC);
in = new ObjectInputStream(fis);
tracker = (StatsTracker)in.readObject();
in.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(ClassNotFoundException ex)
{
ex.printStackTrace();
}
}
else
{
tracker = new StatsTracker(difflevel);
}
//other code
}
这是我的html代码
<html>
<head><title>QuizApplet</title></head>
<body>
<center><applet code="histApplet/QuizApplet.class" height=550 width=700>
</applet></center>
</body>
</html>
基扎普利特
如果我注释掉这段代码,它可以在浏览器中工作,但在其他情况下不能。我不知道为什么这不起作用,非常感谢您的帮助。请参阅我的答案。Java小程序在浏览器中的沙箱中执行,因此对运行小程序的客户端计算机中的资源(进入浏览器)的访问受到限制。小程序无法访问文件系统,如多个站点中所述
您需要对小程序(受信任的代码)进行签名才能访问文件系统。正如David所写,小程序无法访问本地文件系统 他们可以将数据发送到他们来自的主机(并从那里接收答案),因此,如果您有一些服务器端程序在那里接受这些高分,您可以将高分存储在服务器上
另一种方法是使用,然后您的小程序可以使用访问特定于小程序的本地存储。我将使用什么类型的程序来接受文件?使用套接字会起作用吗,还是特定于服务器?此外,程序是否必须全天候运行,或者是否可以在需要接收数据时激活?对于所有的问题,我都很抱歉,我对在编程中使用服务器和互联网非常陌生。任何服务器端应用程序都是可能的。如果该程序能够解释序列化数据(而不是简单地将其发送回下一个小程序),那么使用基于Java的解决方案就更容易了。您可以让一些程序监听套接字(一直运行),如果需要,您可以通过inetd启动程序(然后客户端也将使用套接字连接),或者使用一些基于HTTP的解决方案,如Servlet、PHP页面或CGI脚本。如果服务器程序是基于Java的,那么最好是已经运行的进程,因为VM需要一些时间启动。(例如,这将是一个Servlet或独立套接字解决方案。)