<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <script type="text/javascript" src="dtree.js"></script>
    </head>    <body>
        <script type="text/javascript">
            d = new dTree('d');
            d.add(0,-1,'My example tree');
            d.add(1,0,'Node 1','#');
            document.write(d);
        </script>
    </body>
</html>
以上是通过html编写的一个树形目录
================================现在问题是我想把html写成Servlet,这样就可以动态调用js里的 add()方法,从而实现动态生成目录的效果。
(dtree.js这个文件和Servlet在同一个包下,在网上查了,目录的问题应该可以排除),但发现无法显示,求写法。
我写的Servlet如下:
public class ListServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html; charset=gb2312");
        out.println("<html><head>");
        out.println("<script type='text/javascript' src='dtree.js'></script>");
        out.println("</head>");
        out.println("<body>");
        out.println("<script type='text/javascript'>");
        out.println("d = new dTree('d');");
        out.println("d.add(0,-1,'My example tree');");
        out.println("d.add(1,0,'Node 1','#');");
        out.println("document.write(d);");
        out.println("</script>");
        out.println("</body>");
        out.println("</html>");
        }
}

解决方案 »

  1.   

    servlet里面的dopost和doget两个方法,你确定调用的是doget方法吗?dopost里面的方法写的是什么,最好在dopost方法里面写上this.doGet(request,response);这样若是调用的是dopost方法的话,你在doget里面写的东西也可以显示出来了,试试吧,亲~
      

  2.   

    你的action  设置web都没有吧?
      

  3.   

    Servlet
    package org.servlet;import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out
    .println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />");
    out
    .println("<link rel=\"StyleSheet\" href=\"dtree.css\" type=\"text/css\" />");
    out
    .println("<script type=\"text/javascript\" src=\"dtree.js\"></script>");
    out.println("</head>");
    out.println("<body>");
    out.println("<div class=\"dtree\">");
    out.println("<p>");
    out.println("<a href=\"javascript: d.openAll();\">open all</a> |");
    out.println("<a href=\"javascript: d.closeAll();\">close all</a>");
    out.println("</p>");
    out.println("<script type=\"text/javascript\">");
    out.println("d = new dTree('d');");
    out.println("d.add(0,-1,'My example tree');");
    out.println("d.add(1,0,'Node 1','#');");
    out.println("d.add(2,0,'Node 2','#');");
    out.println("d.add(3,1,'Node 1.1','#');");
    out.println("document.write(d);");
    out.println("</script>");
    out.println("</div>");
    out.println("</body>");
    out.println("</html>");
    out.flush();
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    }
    }Html
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <link rel="StyleSheet" href="dtree.css" type="text/css" />
    <script type="text/javascript" src="dtree.js"></script>
    </head> <body>
    <div class="dtree">
    <p>
    <a href="javascript: d.openAll();">open all</a> |
    <a href="javascript: d.closeAll();">close all</a>
    </p>
    <script type="text/javascript">
    d = new dTree('d');
    d.add(0,-1,'My example tree');
    d.add(1,0,'Node 1','#');
    d.add(2,0,'Node 2','#');
    d.add(3,1,'Node 1.1','#');
    document.write(d);
    </script>
    </div>
    </body>
    </html>我查看servlet输出的源文件,与html一模一样,但就是显示不正常,不知道为什么,求解答
      

  4.   

    你的js文件放错了位子,按你的写法,你的js文件应改放在WebRoot文件夹下,也就是和你设置的Mapping路径同目录
      

  5.   

    servlet里面的dopost和doget两个方法,你确定调用的是doget方法吗?dopost里面的方法写的是什么,最好在dopost方法里面写上this.doGet(request,response);这样若是调用的是dopost方法的话,你在doget里面写的东西也可以显示出来了