|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:js|客户端|数据jsp中经由过程数据流向客户端传送数据
/**
@作者:慈勤强
@Email:cqq1978@Gmail.com
*/
有人常常会问如许一个成绩:“服务器端程序怎样向客户端输入一个文件,然后让扫瞄器
翻开一个保留文件的对话框,来保留这个文件。”固然了,一个很复杂的做法,就是做一个
毗连,指向要输入的文件,好比<ahref="a.rar">下载a.rar</a>,如许,当用户点击
毗连的时分就会弹出IE的保留文件对话框,然后下载。
不外,如许做有两方面的缺点:
一是,扫瞄器偶然候会自作伶俐,关于一些罕见的文件范例会挪用相干的使用程序翻开,
好比,下载一个word文档.doc文件,偶然候扫瞄器会默许用word程序翻开它。
二是,就是避免盗链的成绩。一个用户能够间接经由过程url地点来随便的援用这个文件,形成
文件的盗用。
如今,在jsp中就能够间接经由过程文件流的体例向客户端写数据,相似于我们在asp顶用到
的adodb.stream对象。如许,我们就能够把我们必要回护的文件放到Web根目次之外的中央,
好比web根目次在F: omcatwebappsROOT,而我们能够把文件放到f:software目次
下,如许他人就没有举措经由过程挪用url来下载文件了。
好了,上面我们就来看看代码怎样编写。
起首,设置一下response对象的contenttype为APPLICATION/OCTET-STREAM;
接着,设置response对象的httpheader属性Content-Disposition为一个文件名,
好比:attachment;filename="a.rar",个中的filename是“另存为”对话框呈现的
文件名。
最初,就要用FileInputStream对象从文件中读取数据,然后输入。
详细例子为:
<%
Stringfilename="JavaFlash.rar";
Stringfilepath="f:";
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment;filename="a.rar"");
java.io.FileInputStreamfileInputStream=newjava.io.FileInputStream(filepath+filename);
inti;
while((i=fileInputStream.read())!=-1){
out.write(i);}
fileInputStream.close();
out.close();
%>
出格值得注重的一点就是:这类办法是间接从文件中读取数据,然后输入到客户端。以是在全部文件中,不克不及再
向客户端输入任何信息,由于经由过程其余体例输入的信息也会保留在文件中,如许就损坏了文件的布局了。好比,
<%标记后面呈现的哪怕一个空格,一个回车都不成以,以是万万要当心。
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。 |
|