Java文件下载ContentType设置

String filePath=””; File file=new File(filePath); //解决乱码问题 String filename=URLEncoder.encode(file.getName(),”utf-8″); //重置输出流 response.reset(); Response.AddHeader(“Content-Disposition”, “attachment;filename=”+filename);//设置文件名 response.addHeader(“Content-Length”,file.length);//设置下载文件大小 response.setContentType(“application/octet-stream”);//设置文件类型 OutputStream toClient=new BufferedOuntputStream( response.getOutputStream() );//获取二进制输出流 //读取文件数据 InputStream fis=new BufferedInputStream(new FileInputStream(filePath)); byte[] buffer=new byte[file.length()]; fis.read(buffer); fis.close(); //输出文件数据 toClient.write(buffer); toClient.close(); 文件类型如下: “.*”=”application/octet-stream” “.001″=”application/x-001” “.301″=”application/x-301” “.323″=”text/h323” “.906″=”application/x-906” “.907″=”drawing/907” “.a11″=”application/x-a11” “.acp”=”audio/x-mei-aac” “.ai”=”application/postscript” “.aif”=”audio/aiff” “.aifc”=”audio/aiff” “.aiff”=”audio/aiff” “.anv”=”application/x-anv” “.asa”=”text/asa” “.asf”=”video/x-ms-asf” “.asp”=”text/asp” “.asx”=”video/x-ms-asf” “.au”=”audio/basic” “.avi”=”video/avi” “.awf”=”application/vnd.adobe.workflow” “.biz”=”text/xml” “.bmp”=”application/x-bmp” “.bot”=”application/x-bot” “.c4t”=”application/x-c4t” “.c90″=”application/x-c90” “.cal”=”application/x-cals” “.cat”=”application/vnd.ms-pki.seccat” “.cdf”=”application/x-netcdf” “.cdr”=”application/x-cdr” “.cel”=”application/x-cel” “.cer”=”application/x-x509-ca-cert” “.cg4″=”application/x-g4” “.cgm”=”application/x-cgm” “.cit”=”application/x-cit” “.class”=”java/*” “.cml”=”text/xml” “.cmp”=”application/x-cmp” ...

2016年8月18日 · 2 分钟 · 天边的星星

IntelliJ IDEA 14.1上JFinal开发环境搭建手册

JFinal官方的教程都是使用Eclipse进行开发的,而使用Intellij IDEA来做开发,不少地方和Eclipse区别还是很大的。 本文参考了网上不少文章,主要沿用了网友的内容,一步一步做了尝试后记录下来,感谢万能的互联网。 分别做了两个Module,分别使用Jetty和tomcat来运行。均测试均可正常跑起来。 本文看起来虽然很长,但实际上步骤不多,为便于初学者了解Intellij IDEA,所以细节写的非常完善,每一步都有截图。 本文使用的开发环境是Intellij IDEA 14.1.4版本。JFinal是2.0版。 请大家注意:不是Intellij IDEA配置繁琐,而是我为了便于入门初学者少走弯路,写得非常细,凡是每一个出现的界面,我都截了图,而且文章里面包含了jetty和tomcat的两个项目。所以看起来比Eclipse好像复杂,其实不是的。简单地说,就五个步骤:建项目(类比于Eclipse的Workspace),建模块(类比于Eclipse的Project),引入Jar包,建Artifacts,写代码。就可以运行了。 一、新建项目 新建一个项目,可以是空项目,也可以是连模块一起建的项目,本文为了演示Jetty和tomcat均能运行的效果,所以先建一个空项目,再分别建两个不同的module,以便区分。 如果项目和模块一起建,可以把Web Application选上,其他的默认就行。 因为我们要分别测试jetty和tomcat的效果,要建两个模块,所以先建一个空项目。 点击“Next”进入下一步。 输入项目名称和项目所在目录,点击“Finish”即可。 二、项目参数配置 1.新建Module 如果新建一个空项目,会立即出来一个Project Structure的配置窗口。如果是连模块一起建的,请从【File】-【Project Structure】中选择,对项目参数进行配置。 首先指定项目所使用的JDK版本: 如果要单独为每个模块指定JDK版本,也可以在模块中进行配置(要在下面的新建模块步骤之后才能操作)。 下面开始新建模块。 选择Modules,准备新建Module。 2.建Jetty运行模块 (1)新建模块 我们先新建一个module,用于使用jetty来运行。 选上“Web Application”后,点击Next。 在出现的窗口中,直接在Module name中输入想要新建的module名字,下面的Content root和Module file location中会自动把路径填进去。 为了便于区分,我们把jetty运行的module命名为jf_jt。 点击“Finish”。 此时会出现如下界面; 选择“Paths”选项卡,选中“Use module compile output path”后,在“Output path”和“Test output path”中均写上类输出的路径。按照一般常规写法,我把这个目录放在module下,web\WEB-INF路径下的classes目录下。 点击“Apply”,把配置启用起来; (2)导入类库 然后点击左侧的Libraries选项卡; 在做这一步之前,我们先要把需要的类库分别拷贝到我们建立的类库目录中。 这个模块是需要jetty来运行的,所以需要JFinal的类库和jetty的类库,事先准备好这几个类库。 Jfinal-2.0-all目录下有需要的类库文件。 “jfinal-2.0-bin.jar”或“jfinal-2.0-bin-with-src.jar”是jfinal本身的jar包,任选一个都可以,为了方便调试,可以选择“jfinal-2.0-bin-with-src.jar”。 目前这个项目是为了Jetty而建的,所以要把“jetty-server-8.1.8.jar”也要包含进去。 在电脑中找到项目目录,进入到Module路径中,新建文件夹; ...

2016年8月14日 · 1 分钟 · 天边的星星

Java读取文件MD5的两种方案

最近要弄一下Java读取文件MD5,注意这里是小文件,网上找了一下,有两种解决方案,一种是用MessageDigest来实现,另种是用org.apache.commons.codec.digest来实现,代码如下: **[java]** [view plain](http://blog.csdn.net/wangqiuyun/article/details/22941433#) [copy](http://blog.csdn.net/wangqiuyun/article/details/22941433#) <div> <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1"> </embed> </div> <span class="tracking-ad" data-mod="popu_167">[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/274974)</span><span class="tracking-ad" data-mod="popu_170">[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/274974/fork)</span></div> </div> - <span class="keyword">package</span> cdm; - <span class="keyword">import</span> java.io.File; - <span class="keyword">import</span> java.io.FileInputStream; - <span class="keyword">import</span> java.io.FileNotFoundException; - <span class="keyword">import</span> java.io.IOException; - <span class="keyword">import</span> java.math.BigInteger; - <span class="keyword">import</span> java.nio.MappedByteBuffer; - <span class="keyword">import</span> java.nio.channels.FileChannel; - <span class="keyword">import</span> java.security.MessageDigest; - - <span class="keyword">import</span> org.apache.commons.codec.digest.*; - <span class="keyword">import</span> org.apache.commons.io.IOUtils; - - <span class="keyword">public</span> <span class="keyword">class</span> testMD5 { - - <span class="keyword">public</span> <span class="keyword">static</span> String getMd5ByFile(File file) <span class="keyword">throws</span> FileNotFoundException { - String value = <span class="keyword">null</span>; - FileInputStream in = <span class="keyword">new</span> FileInputStream(file); - <span class="keyword">try</span> { - MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, <span class="number"></span>, file.length()); - MessageDigest md5 = MessageDigest.getInstance(<span class="string">&#8220;MD5&#8221;</span>); - md5.update(byteBuffer); - BigInteger bi = <span class="keyword">new</span> BigInteger(<span class="number">1</span>, md5.digest()); - value = bi.toString(<span class="number">16</span>); - } <span class="keyword">catch</span> (Exception e) { - e.printStackTrace(); - } <span class="keyword">finally</span> { - <span class="keyword">if</span>(<span class="keyword">null</span> != in) { - <span class="keyword">try</span> { - in.close(); - } <span class="keyword">catch</span> (IOException e) { - e.printStackTrace(); - } - } - } - <span class="keyword">return</span> value; - } - - <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> main(String[] args) <span class="keyword">throws</span> IOException { - - String path=<span class="string">&#8220;E:\\commons-codec-1.9-bin.zip&#8221;</span>; - - String v = getMd5ByFile(<span class="keyword">new</span> File(path)); - System.out.println(<span class="string">&#8220;MD5:&#8221;</span>+v.toUpperCase()); - - FileInputStream fis= <span class="keyword">new</span> FileInputStream(path); - String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis)); - IOUtils.closeQuietly(fis); - System.out.println(<span class="string">&#8220;MD5:&#8221;</span>+md5); - - <span class="comment">//System.out.println(&#8220;MD5:&#8221;+DigestUtils.md5Hex(&#8220;WANGQIUYUN&#8221;));</span> - } - - } </div> 运行: ![](http://img.blog.csdn.net/20140404160025078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3FpdXl1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 结果在官网提供的MD5一致。 附commons-codec-1.9.jar下载地址:[http://commons.apache.org/proper/commons-codec/download_codec.cgi](http://commons.apache.org/proper/commons-codec/download_codec.cgi) 如果要处理过G的文件,请参照:[http://www.cnblogs.com/yaowukonga/p/3523668.html](http://www.cnblogs.com/yaowukonga/p/3523668.html)

2016年7月29日 · 2 分钟 · 天边的星星

MVC模式优缺点

优点: 耦合性低 重用性高 生命周期成本低 部署快 可维护性高 有利软件工程化管理 缺点: 没有明确的定义 不适合小型、中等规模 增加系统结构和实现的复杂性 视图与控制器间过于紧密的连接 视图对模型数据的低效率访问 一般高级的界面工具或构造器不支持模式

2016年6月27日 · 1 分钟 · 天边的星星

java中无符号类型的处理

在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换。 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream中的数据以Unsigned读取。 Java在这方面提供了支持,可以用java.io.DataInputStream类对象来完成对流内数据的Unsigned读取,该类提供了如下方法:(1)int readUnsignedByte() //从流中读取一个0255(0xFF)的单字节数据,并以int数据类型的数据返回。返回的数据相当于C/C++语言中所谓的“BYTE”。(2)int readUnsignedShort() //从流中读取一个065535(0xFFFF)的双字节数据,并以int数据类型的数据返回。返回的数据相当于C/C++语言中所谓的“WORD”, 并且是以“低地址低字节”的方式返回的,所以程序员不需要额外的转换。 方案二:利用Java位运算符,完成Unsigned转换。 正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码: public int getUnsignedByte (byte data){ //将data字节型数据转换为0255 (0xFF 即BYTE)。return data&0x0FF;} public int getUnsignedByte (short data){ //将data字节型数据转换为065535 (0xFFFF 即 WORD)。return data&0x0FFFF;} public long getUnsignedIntt (int data){ //将int数据转换为0~4294967295 (0xFFFFFFFF即DWORD)。return data&0x0FFFFFFFFl;} 灵活的运用这些技法,根本不存“二进制在Java中得不到全面支持”的论断!

2015年4月8日 · 1 分钟 · 天边的星星

java 网页解析工具包 Jsoup

Jsoup是一个非常好的解析网页的包,用java开发的,提供了类似DOM,CSS选择器的方式来查找和提取文档中的内容。 相关资料如下: 下载地址:[http://jsoup.org/download](http://jsoup.org/download) 中文文档资料:[http://www.open-open.com/jsoup/](http://www.open-open.com/jsoup/) 比较好的文档:[http://www.ostools.net/apidocs/apidoc?api=jsoup-1.6.3](http://www.ostools.net/apidocs/apidoc?api=jsoup-1.6.3) &nbsp; 今天做了一个Jsoup解析网站的项目,使用Jsoup.connect(url).get()连接某网站时偶尔会出现 java.net.SocketTimeoutException:Read timed out异常。 原因是默认的Socket的延时比较短,而有些网站的响应速度比较慢, 所以会发生超时的情况。 解决方法: 链接的时候设定超时时间即可。 doc = Jsoup.connect(url).timeout(5000).get(); 5000表示延时时间设置为5s。 测试代码如下: 1,不设定timeout时: <div class="dp-highlighter bg_java" style="color: #362e2b;"> <div class="bar"> <div class="tools" style="color: silver;"> **[java]** [view plain](http://blog.csdn.net/huangxy10/article/details/8188067#)[copy](http://blog.csdn.net/huangxy10/article/details/8188067#)[print](http://blog.csdn.net/huangxy10/article/details/8188067#)[?](http://blog.csdn.net/huangxy10/article/details/8188067#) <div> </div> </div> </div> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">package</span> jsoupTest; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> java.io.IOException; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.*; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.helper.Validate; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.nodes.Document; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.nodes.Element; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.select.Elements; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">public</span> <span class="keyword" style="font-weight: bold; color: blue;">class</span> JsoupTest { </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">public</span> <span class="keyword" style="font-weight: bold; color: blue;">static</span> <span class="keyword" style="font-weight: bold; color: blue;">void</span> main(String[] args) <span class="keyword" style="font-weight: bold; color: blue;">throws</span> IOException{ </span> - <span style="color: black;"> String url = <span class="string" style="color: red;">&#8220;http://www.weather.com.cn/weather/101010400.shtml&#8221;</span>; </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">long</span> start = System.currentTimeMillis(); </span> - <span style="color: black;"> Document doc=<span class="keyword" style="font-weight: bold; color: blue;">null</span>; </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">try</span>{ </span> - <span style="color: black;"> doc = Jsoup.connect(url).get(); </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">catch</span>(Exception e){ </span> - <span style="color: black;"> e.printStackTrace(); </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">finally</span>{ </span> - <span style="color: black;"> System.out.println(<span class="string" style="color: red;">&#8220;Time is:&#8221;</span>+(System.currentTimeMillis()-start) + <span class="string" style="color: red;">&#8220;ms&#8221;</span>); </span> - <span style="color: black;"> } </span> - <span style="color: black;"> Elements elem = doc.getElementsByTag(<span class="string" style="color: red;">&#8220;Title&#8221;</span>); </span> - <span style="color: black;"> System.out.println(<span class="string" style="color: red;">&#8220;Title is:&#8221;</span> +elem.text()); </span> - <span style="color: black;"> } </span> - <span style="color: black;">} </span> </div> **<span style="color: #362e2b;">有时发生超时:</span> <span style="color: #ff0000;">java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at sun.net.www.http.ChunkedInputStream.fastRead(Unknown Source) at sun.net.www.http.ChunkedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnectionHttpInputStream.read(Unknown Source) at java.util.zip.InflaterInputStream.fill(Unknown Source) at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.GZIPInputStream.read(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at org.jsoup.helper.DataUtil.readToByteBuffer(DataUtil.java:113) at org.jsoup.helper.HttpConnectionResponse.execute(HttpConnection.java:447) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159) at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148) at jsoupTest.JsoupTest.main(JsoupTest.java:17) Time is:3885ms Exception in thread “main” java.lang.NullPointerException at jsoupTest.JsoupTest.main(JsoupTest.java:25) ...

2014年4月29日 · 4 分钟 · 天边的星星