web app路径为 D:\tomcat\webapps\temp,如果要打开的html文件在 D:\tomcat\webapps\temp\result下,则在servlet中可用下面的代码来打开 html file :
writer.println("<script type='text/javascript'>");   writer.println("window.open('result/a.html')");  
writer.println("</script>");但如果我要打开的 html file放在 E:\result下,请问此时我怎样才能在servlet中打开这个html file? 谢谢!

解决方案 »

  1.   

    考虑直接输出该文件:        response.setContentType("text/html; charset=UTF-8");
            OutputStream os = response.getOutputStream(); // 输出流
            File file = new File("E:\\result\\xxoo.html"); // 打开文件
            byte[] buffer = new byte[4096];
            int len = 0;
            FileInputStream fis = new FileInputStream(file);
            try {
                while ((len = fis.read(buffer)) > 0) {
                    os.write(buffer, 0, len);
                }
            } finally {
                fis.close();
            }
      

  2.   

    楼主是要打开客户端本地的html文件?open方法直接将绝对路径写进去不行吗?应该可以的吧http://zhidao.baidu.com/question/226998273.html
      

  3.   

    Thanks Mice!
    我按照你的代码去做,但还是不成功(我用的是tomcat6). 然后我用另一个tomcat6(重新下载的)去做,却可以成功打开html file。  
    我不知道这是为什么? 为什么我一直用的tomcat不行,重新下个却可以? 
      

  4.   


    我是要打开服务器端的,想把生成的文件显示给用户看。 用 window.open的话我只能打开放在 tomcat里面的文件,不能打开放在其他盘的文件。
      

  5.   


    这个可能跟配置有关系,没法简单的得出一个推论。不过客观地说,自己写代码来负责读取文件并输出,综合效率并不高;如果能将该目录直接在Tomcat中发布成另一个WebContext,会更好些。
      

  6.   

    了解了,执行是在客户端,但是window.open的首参类型URL可以是相对server的一个地址,恐怕在server之外无法访问到,这应该是open方法的限制,相当于客户端访问服务端不会访问到应用服务器所在范围之外。而服务端本身是可以提供此种服务的(就是ldh的方法,不在安全限制之内)http://www.study-area.org/coobila/tutorial_275.html