我怎么打电话
actionPerformed(ActionEvent e)
从另一种方法,即
returnHolder()
就我而言,这样arraylist可以拥有所有数据,因此我可以使用servlet在本地主机上写入数据。现在,在我的
做得到
方法,
System.out.println(“列表的大小为” + list.size());
给我零。希望有人可以帮助我。非常感谢。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Dummy extends JFrame{
public static ArrayList<String> list = new ArrayList<String>();
public static ArrayList<String> holder = new ArrayList<String>();
public static JButton play;
public Dummy() {
Container content = getContentPane();
play = new JButton("fuck");
play.setEnabled(true);
PlayListener playListener = new PlayListener();
play.addActionListener(playListener);
content.add(play, BorderLayout.SOUTH);
}
class PlayListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
list.add("what");
list.add("the");
list.add("hell");
for(int i = 0; i < list.size(); i++){
holder.add(list.get(i));
}
}
}
public static ArrayList<String> returnHolder() {
//play.doClick();
return holder;
}
public static void main(String args[]) {
JFrame frame = new Dummy();
frame.pack();
frame.show();
}
}
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.tutorials.Dummy;
public class ListJson extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ArrayList<String> list = Dummy.returnHolder();
System.out.println("size of the list is " + list.size());
resp.setContentType("application/json");
PrintWriter writer = resp.getWriter();
for(int i = 0; i < list.size(); i++) {
writer.println(list.get(i));
}
writer.flush();
writer.close();
}
}
Servlet和您的主程序位于不同的JVM中,无法直接通信。
为了在它们之间进行通信,您需要某种远程通信。在这种情况下,最简单的方法是在已经运行http服务器的情况下使用http。
例如,您可以将doPost方法添加到servlet,然后从主程序中将一些json数据发布到其中。关于从客户端发送HTTP的教程足够多,例如,请看这里
请注意,您不能仅将数据保留为servlet实例中的非静态字段,因为不能保证将doGet与doPost在同一实例上调用。
对于现实生活中的系统,您会将数据保存在数据存储中,可能是通过框架或持久层来抽象的。我想对您来说还不是这样。出于学习/指导目的,您可以将数据保留在某个静态成员中,因此doGet和doPost访问相同的数据实例。您还需要通过同步来保护检索/更新,因为doGet和doPost可能来自不同的线程。
您可以从独立客户端示例中查看有关servlet更新的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句