Java 如何在http响应中发送字符串列表?

Java 如何在http响应中发送字符串列表?,java,httpresponse,Java,Httpresponse,我在列表资产列表中有一个字符串列表。 如何在Javaservlet中的http响应中发送列表? 我对java非常陌生。将列表转换为字符串后调用此方法: private void writeResponse(HttpServletResponse response, String responseString) { try { PrintWriter out = response.getWriter(); out.println(responseString

我在列表资产列表中有一个字符串列表。 如何在Javaservlet中的http响应中发送列表?
我对java非常陌生。

将列表转换为字符串后调用此方法:

private void writeResponse(HttpServletResponse response, String responseString) {
    try {
        PrintWriter out = response.getWriter();
        out.println(responseString);
        out.flush();
        response.flushBuffer();
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
要将字符串列表转换为字符串,请参见:
对象列表就是一个对象。这与在响应中添加对象(序列化)和在另一端反序列化是一样的

OutputStream out = response.getOutputStream();
oos = new ObjectOutputStream(out);
oos.writeObject(yourSerializableObject);
更多信息:


如果您可以自由选择响应的格式,并且响应主要由客户端应用程序处理,那么请使用JSON。将字符串列表转换为JSON数组(字符串)并发送该数组

我推荐JSON,因为:

  • 您最好使用标准格式/序列化方案,而不是非标准(即自定义)方案
  • JSON在各种编程语言中易于生成和解析
  • JSON是基于文本的(相对而言)人类可读的
当然,有很多替代方案,包括特定于语言的方案(Java对象序列化),更紧凑、编码和解码速度更快的方案,等等


但是对于典型的基于web的应用程序协议,JSON实际上是一个不错的选择。

我建议您阅读更多关于servlet、JSP和ManagedBeans的信息

首先,现在很高兴知道这些东西是如何工作的,但稍后您可以升级并使用JSF进行Java Web应用程序

回到你的问题:

通常的方法是使用Java“托管”bean来实现这一点

假设您向servlet发送请求,响应应该是一个人员列表:

您可以使用getter和setter方法创建一个名为
Person.java
的Bean,其中包含id、name、tel等等

然后创建一个控制器类,如
PersonManager.java

此对象可能具有获取人员列表或员工列表的方法

在servlet中初始化这些数据并将其放入响应的请求范围

下面是如何在Servlet中执行此操作的示例:

    public class YourServlet extends HttpServlet {
        protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        Person p = new Person();
        p.setName("Mohamad ...");
        p.set....    
        ArrayList phones = new ArrayList();
        PhoneNumber ph = new PhoneNumber();
        ph.set...;
        ph.set...;
        al.add(ph);
        ph = new PhoneNumber();
        ph.set...;
        ph.set...;
        al.add(ph);
        a.setPhoneNumbers(al);

        req.setAttribute("person", p);
        RequestDispatcher rd = req.getRequestDispatcher("yourResult.jsp");
        rd.forward(req, res);
       }
}

然后,在JSP中,您可以检索结果并在列表上循环,或者您想用它做什么

为什么是HTTP Servlet响应?我正在执行GET请求,需要发送响应。您没有向我们提供任何信息。您的代码是做什么的,对客户端的响应是什么?您希望响应以什么格式“显示”给客户端?感谢所有能够更好地帮助您提出问题的技术信息。您可以在web方法中定义希望接收并愿意生成的数据的合同格式。您可以创建自己的格式,也可以只使用已有的格式:JSON、XML等。有大量的库可以帮助您实现这一点。它查询db并获取名称列表。我必须把那张名单寄去作为答复。我不知道什么是更好的格式发送列表的回应。可以是纯文本。我们也可以作为json发送。它不是字符串。这是一个字符串列表。