从Servlet Java中获取JSON对象

时间:2012-12-09 04:46:06

标签: java json servlets post gson

我想创建一个应用程序,它将从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的应用程序中使用什么,获取对象,以便我以后可以操作它?

提前致谢。

3 个答案:

答案 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.HttpURLConnectionjava.net.URL对象创建与此servlet的连接,并读取第二个servlet中上面的JSON servlet流式传输的JSON。