当前位置 : 主页 > 编程语言 > java >

在jsp中的javascript中访问会话变量

来源:互联网 收集:自由互联 发布时间:2021-06-25
我需要为google API表提供数据…所以我将它从servlet发送到JSP 但是如何在“googles”javascript中访问这些数据? 我将提供另一个JS的样本 – 非常简单 – 只是为了让我学习如何制作主题 sc
我需要为google API表提供数据…所以我将它从servlet发送到JSP

但是如何在“googles”javascript中访问这些数据?

我将提供另一个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 for循环…通常我更喜欢最小化java代码,并最大化JS

在预处理servlet的doGet()中将其转换为 JSON.你可以使用其他 Google Gson.假设你有一个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.例如,当它映射到/ persons的URL模式时,在http://localhost:8080/contextname/persons之前调用它.

网友评论