如何将序列化的xml数据从servlet发送到客户端?

时间:2014-03-09 20:27:35

标签: xml http java-ee servlets simple-framework

我的应用程序在服务器中查询某些数据,服务器运行相应的SQL语句并获取结果。现在,使用Simple XML API将结果序列化为XML。我的问题是我想将这个xml数据发送回应用程序。

到目前为止,我首先将XML文件保存在服务器上的某个位置,并将其作为URL提供 - http://localhost:8080/abc/123.xml 以下是我使用Simple XML API完成目前的工作方式:

Serializer serializer = new Persister();
GetCard_info_xml getCard_Object = new GetCard_info_xml(received_numbers);               
File result = new File("/home/user/workspace/xml_files/GetCard_xml_output/GetCard_xml_output_"+ receivedMobileString +".xml");
try {
     serializer.write(getCard_Object, result);
    } catch (Exception e) {
     e.printStackTrace();
    }

在此之后,我要求我的应用程序使用相同的Simple XML API解析URL。像这样:

URL GetCardXmlUrl = new URL("http://10.0.2.2:8080/getcardxml/GetCard_xml_output_"+ mobile +".xml");
URLConnection GetCardXmlConnection = GetCardXmlUrl.openConnection();
InputStream PhonebookInstream = new BufferedInputStream(GetCardXmlConnection.getInputStream());
Serializer PhoneBookSerializer = new Persister();

我意识到这是不合适的,因为xml文件是公共的,因此根本不安全,因为所有数据也变得公开。另外,对我来说,这似乎只是hacky而不是一个合适的解决方案。

如何将整个序列化文件从服务器发送到应用程序,就像使用类似OutputStreamWriter之类的简单字符串一样?

1 个答案:

答案 0 :(得分:1)

这是一个简单的 pseude代码

Example example = ... // create your data 


// Get your writer (or outputstream to write data)
// Those my come from doPost(...) or doGet(...) method
HttpServletResponse response = ...
PrintWriter outWriter = respone.getWriter();

// Serialize to the writer / stream
Serializer ser = new Persister();
ser.write(example, outWriter);

如果您实现类扩展HttpServlet,您可以从doPost() / doGet()方法的参数获取输出流/编写器:

  • void doGet(HttpServletRequest request, HttpServletResponse response)
  • void doPost(HttpServletRequest request, HttpServletResponse response)

现在,您可以使用Writerresponse.getWriter())或OutputStreamresponse.getOutputStream)。

Serializer可以写入两者