我需要为Google API表提供数据…所以我将其从servlet发送到JSP
但是如何在“ googles” javascript中访问此数据?
我将提供另一种JS(非常简单的JS)的示例,只是让我学习如何使主题说明
<script> function showTable() { <% Object obj = session.getAttribute("list"); List<String> list = new ArrayList<String>(); int size = 0; if (obj != null) { list = (ArrayList<String>) obj; size = (Integer) session.getAttribute("size"); } for (int i = 0 ; i < size ; i++) { String value = list.get(i); %> alert('<%= i %> = <%= value %> '); <% } %> } </script>
它必须打印给定列表的元素…但是现在,它只是其中一个带有警报的大片段…用于重构它?我不喜欢在JSP中使用太多Java,因为servlet是应该放置它的位置
编辑:综上所述-我希望在此处使用“普通” JS循环…通常,我希望最小化Java代码并最大化JS
将其转换为JSON在doGet()预处理的servlet。您可以为此使用Google Gson。假设您拥有List<Person>:
doGet()
List<Person>
List<Person> persons = createItSomehow(); String personsJson = new Gson().toJson(persons); request.setAttribute("personsJson", personsJson); request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);
(请注意,我将其设为请求属性而不是会话属性,您可以随意更改它,但是我认为它不一定是会话属性,因为它不代表整个会话范围的数据)
将其分配给JSP中的JS变量,如下所示:
<script> var persons = ${personsJson}; // ... </script>
这样,它就可以作为完全有价值的JS对象使用。您可以直接将其提供给Google API。
现在,调用Servlet的URL而不是JSP。例如,当将其映射到URL模式时/persons,可通过http:// localhost:8080 / contextname / persons调用它。
/persons