输入/输出流Java servlet
我有一个关于Java servlet中可用的输入/输出流Java servlet,java,google-app-engine,servlets,inputstream,Java,Google App Engine,Servlets,Inputstream,我有一个关于Java servlet中可用的ServletInputStream和ServletOutputStream的使用的问题。首先,我将给出一些急需的背景: 我正在处理的任务是在google应用程序引擎中实现任务队列的调用。我已经能够将任务添加到应用程序引擎,并调用相应的工作人员。但是,我正在努力弄清楚如何将可序列化对象的ArrayList传递给worker的doPost()方法。pervailing方法显然是分别使用HTTP请求和响应对象的输入和输出流来处理servlet之间的通信。我
ServletInputStream
和ServletOutputStream
的使用的问题。首先,我将给出一些急需的背景:
我正在处理的任务是在google应用程序引擎中实现任务队列的调用。我已经能够将任务添加到应用程序引擎,并调用相应的工作人员。但是,我正在努力弄清楚如何将可序列化对象的ArrayList
传递给worker的doPost()
方法。pervailing方法显然是分别使用HTTP请求和响应对象的输入和输出流来处理servlet之间的通信。我在谷歌上搜索了很多内容,但没有找到一个清晰的例子,说明如何准备这样一个arraylist作为输出流进行传输,将其添加到第一个servlet的响应中,然后从第二个servlet的请求中检索它,最后将其转换回arraylist,以便在doPost()的代码中使用
方法。这基本上就是我的问题。由于我缺乏Java方面的经验,我很难自己把它全部弄清楚,而且我几乎都在绞尽脑汁
为了更清楚一点,我将发布相关工作者的doPost()
方法:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
try
{
ArrayList<Quote> qs = /*Here the list needs to be read in.*/ null;
EntityManager manager = EMF.get().createEntityManager();
CarRentalModel.get().confirmQuotes(qs, manager);
}
catch (ReservationException e)
{
}
}
protectedvoiddopost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException
{
尝试
{
ArrayList qs=/*此处需要读取列表。*/null;
EntityManager=EMF.get().createEntityManager();
CarRentalModel.get().confirmQuotes(qs,经理);
}
捕获(保留异常e)
{
}
}
任何帮助都将不胜感激
提前谢谢大家,
凯文听从巴卢斯克的建议是值得的。如果您正在寻找一个简单快速的解决方案,可以通过Java的序列化来实现: 在doPost()方法中,您可以创建ObjectInputStream,该流从底层servlet输入流读取数据,并对数据进行反序列化(生成对象)
ServletInputStream sis = req.getInputStream();
ObjectInputStream ois = new ObjectInputStream(sis);
ArrayList<Quote> qs = (ArrayList<Quote>) ois.readObject();
ServletInputStream sis=req.getInputStream();
ObjectInputStream ois=新ObjectInputStream(sis);
ArrayList qs=(ArrayList)ois.readObject();
您可以使用ObjectOutputStream及其writeObject()方法在另一端类似地编写对象。如果这在现场不起作用,请在完成写入操作后尝试.flush()或.close()您的输出流,以触发发送剩余的缓冲数据。您似乎对HTTP比较陌生,而不是对servlet比较陌生。客户到底是什么?听起来好像它不仅仅是一个HTML页面,而且您正在尝试开发一个web服务。您是否曾经考虑过更可重用的东西,如XML或JSON作为输入格式?有了Java序列化,您就只能使用基于Java的客户机了。很显然,我对HTTP确实很陌生,而且它确实是一个非常简单的web服务。然而,我必须坚持给定的方法,我只能根据任务的参数来实现它。不过,我会纯粹出于教育原因来研究你的建议。啊,是的,这比谷歌所说的更有意义。非常感谢你的帮助。