日期:2014-05-17  浏览次数:20895 次

servlet打开html文件
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? 谢谢!
------最佳解决方案--------------------
考虑直接输出该文件:

        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();
        }

------其他解决方案--------------------
引用:
引用:楼主是要打开客户端本地的html文件?

open方法直接将绝对路径写进去不行吗?应该可以的吧
http://zhidao.baidu.com/question/226998273.html

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

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

http://www.study-area.org/coobila/tutorial_275.html
------其他解决方案--------------------
楼主是要打开客户端本地的html文件?

open方法直接将绝对路径写进去不行吗?应该可以的吧

http://zhidao.baidu.com/question/226998273.html
------其他解决方案--------------------
Thanks Mice!
我按照你的代码去做,但还是不成功(我用的是tomcat6). 然后我用另一个tomcat6(重新下载的)去做,却可以成功打开html file。  
我不知道这是为什么? 为什么我一直用的tomcat不行,重新下个却可以? 
------其他解决方案--------------------
引用:
楼主是要打开客户端本地的html文件?

open方法直接将绝对路径写进去不行吗?应该可以的吧

http://zhidao.baidu.com/question/226998273.html


我是要打开服务器端的,想把生成的文件显示给用户看。 用 window.open的话我只能打开放在 tomcat里面的文件,不能打开放在其他盘的文件。
------其他解决方案--------------------
引用:
Thanks Mice!
我按照你的代码去做,但还是不成功(我用的是tomcat6). 然后我用另一个tomcat6(重新下载的)去做,却可以成功打开html file。  
我不知道这是为什么? 为什么我一直用的tomcat不行,重新下个却可以?


这个可能跟配置有关系,没法简单的得出一个推论。

不过客观地说,自己写代码来负责读取文件并输出,综合效率并不高;如果能将该目录直接在Tomcat中发布成另一个WebContext,会更好些。