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();
}
------其他解决方案--------------------
了解了,执行是在客户端,但是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不行,重新下个却可以?
------其他解决方案--------------------
我是要打开服务器端的,想把生成的文件显示给用户看。 用 window.open的话我只能打开放在 tomcat里面的文件,不能打开放在其他盘的文件。
------其他解决方案--------------------
这个可能跟配置有关系,没法简单的得出一个推论。
不过客观地说,自己写代码来负责读取文件并输出,综合效率并不高;如果能将该目录直接在Tomcat中发布成另一个WebContext,会更好些。