﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-cuore-随笔分类-Jsp</title><link>http://www.blogjava.net/cuore/category/32846.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 30 Nov 2008 21:29:20 GMT</lastBuildDate><pubDate>Sun, 30 Nov 2008 21:29:20 GMT</pubDate><ttl>60</ttl><item><title>文件下载</title><link>http://www.blogjava.net/cuore/archive/2008/11/27/243092.html</link><dc:creator>greedy</dc:creator><author>greedy</author><pubDate>Thu, 27 Nov 2008 13:39:00 GMT</pubDate><guid>http://www.blogjava.net/cuore/archive/2008/11/27/243092.html</guid><wfw:comment>http://www.blogjava.net/cuore/comments/243092.html</wfw:comment><comments>http://www.blogjava.net/cuore/archive/2008/11/27/243092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cuore/comments/commentRss/243092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cuore/services/trackbacks/243092.html</trackback:ping><description><![CDATA[byte b[] = new byte[40960];<br />
&nbsp;File fileLoad = new File(path, grade+".zip");//文件名后缀<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // the dialogbox of download file.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置响应头和下载保存的文件名&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Content-disposition", "attachment;filename="downloadname".zip");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set the MIME type.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("application/x-zip");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get the file length.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long fileLength = fileLoad.length();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String length = String.valueOf(fileLength);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Content_Length", length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // download the file.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 打开指定文件的流信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream in = new FileInputStream(fileLoad);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n = 0;<br />
&nbsp;&nbsp;&nbsp; //写出流信息&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((n = in.read(b)) != -1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o.write(b, 0, n);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in.close(); <br />
<br />
<br />
<br />
<br />
以下转载<br />
使用servlet来下载文件，其原理非常简单，只要得到文件的输入流（或相应字节），然后写输出流即可。现就其中的几个细节问题展开： <br />
1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MIME类型的设置： <br />
Web 浏览器使用 MIME 类型来识别非 HTML 文档，并决定如何显示该文档内的数据。 <br />
例如EXCEL文件的 MIME 类型是 "application/vnd.ms-excel "。要用servlet 来打开一个 EXCEL 文档，需要将 response 对象中 header 的 contentType 设置成&#8220;application/vnd.ms-excel &#8221;。 <br />
response.setContentType(contentType); <br />
<br />
2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content disposition <br />
HTTP response header中的content-disposition 允许 servlet 指定文档表示的信息。使用这种header ，你就可以将文档指定成单独打开（而不是在浏览器中打开），还可以根据用户的操作来显示。 <br />
如果用户要保存文档，你还可以为该文档建议一个文件名。这个建议名称会出现在 Save As 对话框的&#8220;文件名&#8221;栏中。如果没有指定，则对话框中就会出现 servlet 的名字。 <br />
servlet 中，将 header 设置成下面这样： <br />
response.setHeader("Content-disposition","attachment;filename="+ "Example.xls" ); <br />
<br />
response.setHeader("Content-Disposition",&nbsp; "inline; filename="fliename) <br />
点击打开会在ie中打开。 <br />
<br />
<br />
需要说明的有三点： <br />
&#216;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中文文件名需要进行iso8859-1转码方可正确显示： <br />
fileName = new String(fileName.getBytes("GBK"),"iso8859-1"); <br />
&#216;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 传递的文件名，需要包含后缀名（如果此文件有后缀名），否则丢失文件的属性，而不能自行选择相关程序打开。 <br />
&#216;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有下载前询问（是打开文件还是保存到计算机）和通过IE浏览器直接选择相关应用程序插件打开两种方式，前者如上代码所示，后者如下： <br />
response.setHeader("Content-disposition","filename="+ "Example.xls" ); <br />
3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在研究文件的上传及下载过程中，有几点体会 <br />
程序的I/O操作往往是性能的瓶颈所在，java io定义了两个基本的抽象类:InputStream和OutputStream,对于不同的数据类型比如磁盘，网络又提供了不同的实现，java.io也提供了一些缓冲流(BufferedStream)，使硬盘可以很快的读写一大块的数据, 而Java基本的I/O类一次只能读写一个字节,但缓冲流(BufferedStream)可以一次读写一批数据，,缓冲流(Buffered Stream)大大提高了I/O的性能。所以: <br />
&#216;小块小块的读写数据会非常慢,因此,尽量大块的读写数据&nbsp; <br />
&#216;使用BufferedInputStream和BufferedOutputStream来批处理数据以提高性能&nbsp; <br />
&#216;对象的序列化(serialization)非常影响I/O的性能,尽量少用&nbsp;&nbsp; <br />
<img src ="http://www.blogjava.net/cuore/aggbug/243092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cuore/" target="_blank">greedy</a> 2008-11-27 21:39 <a href="http://www.blogjava.net/cuore/archive/2008/11/27/243092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>meta http-equiv 用法简介</title><link>http://www.blogjava.net/cuore/archive/2008/07/08/213233.html</link><dc:creator>greedy</dc:creator><author>greedy</author><pubDate>Tue, 08 Jul 2008 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/cuore/archive/2008/07/08/213233.html</guid><wfw:comment>http://www.blogjava.net/cuore/comments/213233.html</wfw:comment><comments>http://www.blogjava.net/cuore/archive/2008/07/08/213233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cuore/comments/commentRss/213233.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cuore/services/trackbacks/213233.html</trackback:ping><description><![CDATA[<div><font style="background-color: #f2f9fb">&lt;meta http-equiv&gt; 用法简介</font><br />
1.定义语言&nbsp; <br />
&nbsp;<br />
　　格式：&nbsp; <br />
　　〈meta&nbsp; http－equiv=&#8243;Content－Type&#8243;&nbsp; content=&#8243;text/html;&nbsp; charset=gb2312&#8243;〉&nbsp; <br />
　　这是META最常见的用法,在制作网页时,在纯HTML代码下都会看到它,它起的作用是定义你网页的语言,当访客浏览你的网页时,浏览器会自动识别并设置网页</div>
<div>中的语言,如果你网页设置的是GB码,而访客没有安装GB码,这时网页只会呈现访客人所设置的浏览器默认语言。同样的,如果该网页是英语,那么charset=en。&nbsp; <br />
&nbsp;<br />
　　2.描述网页&nbsp; <br />
　　格式:&nbsp;&nbsp; <br />
　　〈meta&nbsp; name=&#8243;Keywords&#8243;&nbsp; CONTENT=&#8243;china,enterprise,business,net&#8243;〉&nbsp; <br />
　　META也常用来描述网页,以供某些搜索站台机器人的使用。大家知道,搜索站台分为两大类,一类为完全人工登录,比如Yahoo；另一类为机器人搜索,以机器人</div>
<div>搜索的搜索站台会包含更多的内容。机器人会搜索网页META标签中所设置的描述关键字,把它们加入到搜索数据库中,用来索引你的网页。而这个标签很少有人注</div>
<div>意到。在格式中,Content列出了你所设置的关键字,这其中的内容可以自行设置,其间用逗号相隔。这里有个技巧,你可以重复某一个单词,这样可以提高自己网站的</div>
<div>排行位置,如： <br />
　　〈meta&nbsp; name=&#8243;Keywords&#8243;&nbsp; CONTENT=&#8243;china,china,china,china〉&nbsp; <br />
&nbsp;<br />
　　3.自动刷新页面&nbsp; <br />
&nbsp;<br />
　　格式:&nbsp; <br />
&nbsp;<br />
　　〈meta&nbsp; HTTP－EQUIV=&#8243;refresh&#8243;&nbsp; CONTENT=&#8243;8;&nbsp; URL=http://c98.yeah.net&#8243;〉&nbsp; <br />
&nbsp;<br />
　　大家在浏览某一个网页时,会发现有些页在数秒后自动转到另外一页,这就是META的刷新作用,在CONTENT中,8代表设置的秒数,而URL就是过8秒后自动连接</div>
<div>的网页地址。&nbsp; <br />
&nbsp;<br />
　　4.网页定级评价&nbsp; <br />
&nbsp;<br />
　　格式:&nbsp; <br />
&nbsp;<br />
　　〈META&nbsp; http－equiv=&#8243;PICS－Label&#8243;&nbsp;&nbsp;&nbsp; <br />
&nbsp;<br />
　　content=&#8242;(PICS－1.1&nbsp; &#8243;http://www.rsac.org/ratingsv01.html&#8243;&nbsp;&nbsp;&nbsp; <br />
&nbsp;<br />
　　&nbsp; l&nbsp; gen&nbsp; true&nbsp; comment&nbsp; &#8243;RSACi&nbsp; North&nbsp; America&nbsp; Server&#8243;&nbsp; <br />
&nbsp;<br />
　　&nbsp; for&nbsp; &#8243;http://www.rsac.org&#8243;&nbsp; <br />
&nbsp;<br />
　　&nbsp; on&nbsp; &#8243;1996.04.16T08:15－0500&#8243;&nbsp; <br />
&nbsp;<br />
　　&nbsp; r&nbsp; (n&nbsp; 0&nbsp; s&nbsp; 0&nbsp; v&nbsp; 0&nbsp; l&nbsp; 0))&#8242;〉&nbsp; <br />
&nbsp;<br />
　　在Internet&nbsp; Explorer&nbsp; 4.0浏览器Internet选项中有一个内容设置,它可以防止浏览一些受限制的网站,而之所以浏览器会自动识别某些网站是否受限制,就是</div>
<div>因为在网站META标签中已经设置好了该网站的级别,而该级别的评定是由美国RSAC,即娱乐委员会的评级机构评定的,如果你需要评价自己的网站,可以连接到网站</div>
<div><a href="http://www.rsac.org/">http://www.rsac.org/</a>,按要求提交表格,那么RSAC会提供一段META代码给你,复制到自己网页里就可以了。&nbsp; <br />
&nbsp;<br />
　　5.控制页面缓冲&nbsp; <br />
&nbsp;<br />
　　格式:&nbsp; <br />
&nbsp;<br />
　　〈meta&nbsp; HTTP－EQUIV=&#8243;expires&#8243;&nbsp; CONTENT=&#8243;TUE,11.NOV&nbsp; 1998&nbsp; 00:00&nbsp; GMT&#8243;〉&nbsp; <br />
　　META可以设置网页到期的时间,也就是说,当你在Internet&nbsp; Explorer&nbsp; 4.0浏览器中设置浏览网页时首先查看本地缓冲里的页面,那么当浏览某一网页,而本地</div>
<div>缓冲又有时,那么浏览器会自动浏览缓冲区里的页面,直到META中设置的时间到期,这时候,浏览器才会去取得新页面。&nbsp; <br />
&nbsp;<br />
　　6.META的属性&nbsp;&nbsp; <br />
　　HTTP－EQUIV=&#8243;....&#8243;&nbsp; HTTP响应的标题头；&nbsp;&nbsp; <br />
　　name=&#8243;.....&#8243;&nbsp; META信息的名称；&nbsp;&nbsp; <br />
　　content=&#8243;....&#8243;&nbsp; META信息的具体内容；&nbsp; <br />
　　scheme=&#8243;...&#8243;&nbsp; META信息的图解。<br />
---------------------------------------------------------------------------------------<br />
&lt;META content="C#视频教材,xyBBS系统" name="description"&gt;<br />
&lt;Meta name="Author" Content="清风，<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#102;&#97;&#115;&#116;&#97;&#105;&#116;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">fastait@gmail.com</a>"&gt;<br />
&lt;Meta name="Copyright" Content="本站版权归小雨第二课堂所有。All Rights Reserved"&gt;<br />
---------------------------------------------------------------------------------------<br />
1、&lt;meta http-equiv= "Content-Type"contect="text/html";charset=gb_2312-80"&gt;和 &lt;meta http-equiv="Content-Language" </div>
<div>contect="zh-CN"&gt;用以说明主页制作所使用的文字以及语言；又如英文是ISO-8859-1字符集，还有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集；</div>
<div>2、&lt;meta http-equiv="Refresh" content="n; url=&nbsp; <a href="http://yourlink/">http://yourlink</a>";;&gt; <br />
&nbsp; 定时让网页在指定的时间n秒内，跳转到页面<a href="http://yourlink/">http://yourlink</a>；&nbsp; </div>
<div>3、&lt;meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT"&gt;可以用于设定网页的到期时间，一旦过期则必须到服务器上重新调用。需</div>
<div>要注意的是必须使用GMT时间格式； </div>
<div>4、&lt;meta http-equiv="Pragma" contect="no-cache"&gt;是用于设定禁止浏览器从本地机的缓存中调阅页面内容，设定后一旦离开网页就无法从Cache中再调</div>
<div>出；<br />
&nbsp;<br />
5、&lt;meta http-equiv="set-cookie" contect="Mon,12 May 2004 00:20:00 GMT"&gt;cookie设定，如果网页过期，存盘的cookie将被删除。需要注意的也</div>
<div>是必须使用GMT时间格式； </div>
<div>6、&lt;meta http-equiv="Pics-label" contect=""&gt;网页等级评定，在IE的internet选项中有一项内容设置，可以防止浏览一些受限制的网站，而网站的限制级别</div>
<div>就是通过meta属性来设置的；</div>
<div>7、&lt;meta http-equiv="windows-Target" contect="_top"&gt;强制页面在当前窗口中以独立页面显示，可以防止自己的网页被别人当作一个frame页调用；</div>
 <img src ="http://www.blogjava.net/cuore/aggbug/213233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cuore/" target="_blank">greedy</a> 2008-07-08 10:16 <a href="http://www.blogjava.net/cuore/archive/2008/07/08/213233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>