簡體   English   中英

我應該如何將Servlet中的響應發送到前端?

[英]How should I send the response in Servlet to Front end?

我寫了一個像這樣的Servlet

public class ServletUtil extends HttpServlet {

private static final long serialVersionUID = 1571172240732862415L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String acInfo = request.getQueryString();
    someDao dao = new someDao();
     ArrayList<String> resultAutoComplete=dao.someResults(acInfo);
    out.close();
}

}

我在前端有一個自動完成的對象/向導,因為用戶輸入它是對后端進行Ajax調用以獲取結果列表。 所以我編寫了一個Servlet,我正在提取用戶輸入並從DAO層獲取結果。

我的問題是如何將這個列表(resultAutoComplete)發送到Servlet的前端?

我希望你能以某種方式將其序列化,以便客戶理解它。 例如,可能使用JSON或類似的。

我注意到您的響應內容類型是text/html 那么為什么不簡單地將列表的每個元素寫入你的Writer ,用(例如)一個<li>元素(用相應的無序/順序列表實體包圍) 分隔

通過將其序列化到字符串,並將其寫入out ...

說真的,我不會在Servlet規范的低級代碼。 對於這種返回 - 這個pojo調用我將使用Spring 3的RESTful服務庫 ,或類似的東西。

嘗試這個,

for (String str : resultAutoComplete)
                {
            out.println(str);
        }

沒有json! 而不是通過javascript中的列表,返回一個完整的<li>列表並替換<ul> innerHTML 。這樣做的原因是為了提供更好的性能。 除非你想做一些更靈活的事情,否則將事情留給后端。

什么時候做json,你必須將字符串解析為json對象,然后循環並生成html,這只是一個額外的步驟。 保持簡單,加上解析字符串可能代價高昂。

如果你不循環遍歷列表而是在列表對象中執行out.println ,則可能會看到該地址。 另外,你需要生成html,所以:

StringBuilder sb = new StringBuilder();
for(String option: options){
sb.append("<li>").append(option).append("</li>");
}
out.println(sb);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM