这个是用servlet往APPLET里传值,servlet中的值来自数据库。传的是arraylist,arraylist中的元素是javabean(我的文件中实例的名字叫jb) dbconn是一个类,用于处理连接数据库的代码。具体代码:
servlet:
Collection<javabean> al=new ArrayList<javabean>();
dbconn dbc=new dbconn();
// TODO Auto-generated method stub
String sql="select * from entity_1";
PreparedStatement ps=null;
try{
ps=dbc.getconn().prepareStatement(sql);
javabean jb=new javabean();
ResultSet rs=ps.executeQuery();
       while(rs.next()){

jb.setId(rs.getInt("id"));
jb.setTitle(rs.getString("title"));
jb.setContent(rs.getString("content"));
al.add(jb);
       }

response.setContentType("application/octet-stream");
OutputStream sop=response.getOutputStream();
ObjectOutputStream  op=new ObjectOutputStream(sop);
op.writeObject(al);
applet:
 class inite implements ActionListener{
     @SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent e){
     String content;
      URL u=getCodeBase();
      try {
URL url=new URL(u,"http://localhost:8888/t/F");
    URLConnection con = url.openConnection();
con.setDoOutput(true);
con.setUseCaches(false);
con.connect();
InputStream in=con.getInputStream();
    ObjectInputStream o=new ObjectInputStream(in);
    Collection<javabean> al=(Collection<javabean>) o.readObject();
我用迭代试了,此时的al里的javabean都一样……

解决方案 »

  1.   

    javabean jb=new javabean();请将 这个对象的定义 放倒
    while(rs.next()){中,具体原因 不解释。否则,一直是同一个对象在list中
      

  2.   


    正解,同一个引用放到list中,当然你list里面的所有对象都是同一个啦……
      

  3.   

    javabean jb=new javabean();
    ResultSet rs=ps.executeQuery();
    while(rs.next()){jb.setId(rs.getInt("id"));
    jb.setTitle(rs.getString("title"));
    jb.setContent(rs.getString("content"));
    al.add(jb);
    }
    你每次设置的都是同一个对象。对象是传址的,所以最后将变成所有的对象都是最后一个循环的对吧。所以要每次在循环里都NEW一个新的给它并赋值。