我想创建一个应用程序,它将从servlet中获取JSON对象以对其进行反序列化,然后使用其变量来执行其他操作。
我的servlet在doPost中有以下代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ObjectOutputStream os;
os = new ObjectOutputStream(response.getOutputStream());
String s = new String("A String");
Gson gson = new Gson();
String gsonObject= gson.toJson(s);
os.writeObject(gsonObject);
os.close();
}
现在,当servlet运行时,我可以通过浏览器访问它,如果我在doGet方法中发布相同的代码,那将下载一个servlet文件,这不是我想要的。
我应该在第二个连接到servlet的应用程序中使用什么,获取对象,以便我以后可以操作它?
提前致谢。
答案 0 :(得分:0)
如果下载servlet文件而不是在浏览器中显示它,很可能你没有在响应中设置内容类型。如果您正在编写JSON字符串作为servlet响应,则必须使用
response.setContentType("text/html");
response.getWriter().write(json);
请注意订单,“text / html”而不是“html / text”
答案 1 :(得分:0)
您的servlet需要进行少量更改:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String s = new String("A String");
String json = new Gson().toJson(s);
this.response.setContentType("application/json");
this.response.setCharacterEncoding("UTF-8");
Writer writer = null;
try {
writer = this.response.getWriter();
writer.write(json);
} finally {
try {
writer.close();
}
catch (IOException ex) {
}
}
}
答案 2 :(得分:0)
如果我正确理解了这个问题,那么您可以使用java.net.HttpURLConnection
和java.net.URL
对象创建与此servlet的连接,并读取第二个servlet中上面的JSON servlet流式传输的JSON。