[英]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.