如何从Scriptlet写入Javascript到文件?

时间:2011-06-24 11:35:40

标签: javascript jsp servlets google-visualization scriptlet

我有一系列JSP,每个JSP都包含一个scriptlet,用于使用Google的图表工具为可视化生成代码。这些在运行时动态调用以显示可视化。 以下编辑的代码是典型的:

    <-- HTML of JSP here -->

    <script type = "text/javascript" src = "http://www.google.com/jsapi"></script>

    <script type = "text/javascript">

       google.load("visualization", "1", {packages:["corechart"]});
       google.setOnLoadCallback(drawChart);

       out.println("data.addRows(" + pv.getNoRows()  + ");");

       function drawChart() {
            var data = new google.visualization.DataTable();

        <%   
            int row = 0;
            List<List<String>> datasetVisData = pv.getDatasetVisData();
            ArrayList<String> datasetVisTemporalAxisLabels = pv.getDatasetVisTemporalAxisLabels();
            for (List<String> list : datasetVisualisationData) {                    
                out.println("data.setValue(" + row + ", " + 0 + ", '" + datasetVisTemporalAxisLabels.get(row) + "');");                   
                for (int column = 0; column < list.size() - 1; column++) {                       
                    out.println("data.setValue(" + row + ", " + (column + 1) + ", " + list.get(column) + ");");
                }
                row++;
            }
        %>
     }

     </script>

     <-- HTML of JSP here -->

此scriptlet按如下方式生成Javascript:

data.addRows(2);
data.setValue(0, 0, '22 06 2011 @ 10 00');
data.setValue(0, 1, 10);
data.setValue(0, 2, 10);
data.setValue(0, 3, 10);
data.setValue(0, 4, 15);
data.setValue(0, 5, 10);
data.setValue(1, 0, '22 06 2011 @ 12 00');
data.setValue(1, 1, 5);
data.setValue(1, 2, 4);
data.setValue(1, 3, 3);
data.setValue(1, 4, 2);
data.setValue(1, 5, 2);

依此类推,以便可以向Google发出请求,以便在运行时呈现可视化效果。

但我的问题是上面的方向略有不同,即如果我想将上述输出转移到.html文件中,该文件可以存储在文件系统中,然后合并到后来制作的JSP请求中?

任何人都可以建议可能有用的方法吗?我现在唯一能想到的是在Java代码中生成HTML和嵌入式Javascript,并将输出写入文本文件,例如

    System.out.println("<p></form>\n" +
    System.out.println("<p><input type = \"submit\" value = \"Plot options\"></form>\n" +
                       "</fieldset><p>\n<p>&nbsp;</p>");
    System.out.println("<script language = \"javascript\">");
    System.out.println("document.plotcriteria.reset();");
    System.out.println("</script>");

有人能提出更好的选择吗?是否可以将JSP的输出转移到文件系统而不是客户端浏览器?

由于

摩根先生。

1 个答案:

答案 0 :(得分:0)

我认为你想要JSP的原因是因为你需要一个模板。

看看freemarker,它更符合您想要做的目的。 http://freemarker.sourceforge.net/

你能使用JSP吗?是的,您可以使用Jasper编译器(http://tomcat.apache.org/tomcat-5.5-doc/jasper/docs/api/org/apache/jasper/compiler/Compiler.html)将JSP编译为Java类 您现在有一个java servlet,在其上调用service或doGet方法,传入ServletResponse实现,其中getOutputStream()返回文件流。