如何致电
actionPerformed(ActionEvent e)
来自另一种方法,即
returnHolder()
在我的情况下,所以arraylist可以拥有所有数据,因此我可以使用servlet在localhost上写入数据。现在,在我的
的doGet
方法,
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();
}
}
答案 0 :(得分:0)
阅读Your other question之后,您更清楚自己想要做什么。
Servlet和您的主程序存在于不同的JVM中,无法直接对话。
要在它们之间进行通信,您需要进行某种远程通信。在这种情况下,最简单的方法是使用http,因为您已经运行了http服务器。
例如,您可以将doPost方法添加到servlet中,并从主程序中添加一些json数据。有足够的教程从客户端发送http,例如look here
请注意,您不能仅将数据保存为servlet实例中的非静态字段,因为无法保证在与doPost相同的实例上调用doGet。
对于真实系统,您可以将数据保存在数据存储中,可能由框架或持久层抽象。我猜对你来说并非如此。出于学习/教学目的,您可以将数据保存在某个静态成员中,因此doGet和doPost访问相同的数据实例。您还需要保护检索/更新,例如with synchronized,因为doGet和doPost可能来自不同的线程。
您可以从独立客户端示例中查看this question以获取servlet更新。