- 浏览: 505526 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (200)
- java基础 (30)
- ajax (19)
- 乱写 (5)
- groovy (2)
- db (8)
- gwt (0)
- jee (2)
- 我关注的开源 (1)
- RIA AIR (1)
- spring (11)
- lucene (0)
- 工具 (10)
- 百科 (2)
- linux (6)
- android (40)
- 移动开发 (21)
- 代码片断 (15)
- tomcat (1)
- css (1)
- html5 (2)
- jquery (2)
- playframework (3)
- web (2)
- nio (3)
- design (1)
- nosql (3)
- 日志 (12)
- mysql (4)
- 图表 (1)
- python (3)
- ruby (1)
- git (0)
- hibernate (1)
- springboot (1)
- guava (1)
- mybatis (0)
- 工作问题 (3)
- php (1)
最新评论
-
linzm1990:
踩了很多坑啊。。。。
hibernate @Nofound 与@ManyToOne fetch lazy的问题 -
Ccccrrrrrr:
...
转: Spring boot 文件上传 -
rmzdb:
兄弟,你这个东西,在ie内核的浏览器,貌似不识别 文件名
工作问题:http下载文件,中文文件名在firefox下乱码问题 -
107x:
问题解决了,谢谢!
工作问题:http下载文件,中文文件名在firefox下乱码问题 -
klxqljq:
额鹅鹅鹅
android布局实现头尾固定, 中间多余内容可以滚动
转自 http://javatar.iteye.com/blog/72265
项目中用到下载功能,一般都使用超链接做下载,
但txt, html, csv等会被浏览器直接打开,
写了一个工具类处理这个问题。
很简单,放上来备忘。
项目中用到下载功能,一般都使用超链接做下载,
但txt, html, csv等会被浏览器直接打开,
写了一个工具类处理这个问题。
很简单,放上来备忘。
package com.xxx.servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 下载处理Servlet * @author liangfei0201@163.com * */ public class DownloadServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final String DEFAULT_ENCODING = "UTF-8"; private static final int DEFAULT_BUFFER_SIZE = 4096; private String encoding = DEFAULT_ENCODING; private int bufferSize = DEFAULT_BUFFER_SIZE; public void init(ServletConfig sc) throws ServletException { super.init(sc); String paramEncoding = sc.getInitParameter("encoding"); if (paramEncoding != null && paramEncoding.trim().length() > 0) { encoding = paramEncoding.trim(); } String paramSize = sc.getInitParameter("bufferSize"); if (paramSize != null && paramSize.matches("^[0-9]+$")) { bufferSize = Integer.parseInt(paramSize); } } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 查找文件 File file = new File(getServletContext().getRealPath("/") + request.getServletPath()); if (! file.exists()) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return ; } // 设置response, 这几行是关键 response.setContentType("application/x-msdownload; charset=" + encoding); response.addHeader("content-type", "application/x-msdownload;"); response.addHeader("content-disposition", "attachment; filename="+ response.encodeURL(file.getName())); response.setContentLength((int)file.length()); // 输出 InputStream in = new FileInputStream(file); OutputStream out = response.getOutputStream(); try { int length = 0; byte[] buffer = new byte[bufferSize]; while ((length = in.read(buffer)) != -1) { out.write(buffer, 0, length); } out.flush(); } finally { if (in != null) { in.close(); } } } }
<servlet> <servlet-name>download</servlet-name> <servlet-class>com.xxx.servlet.DownloadServlet</servlet-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> <init-param> <param-name>bufferSize</param-name> <param-value>8192</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet> <servlet-mapping> <servlet-name>download</servlet-name> <url-pattern>/download/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>download</servlet-name> <url-pattern>*.csv</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>download</servlet-name> <url-pattern>*.txt</url-pattern> </servlet-mapping>
发表评论
-
jackson知识点
2014-05-05 14:13 16381. jackson处理boolean类型的注意点 在使用j ... -
ChartDirectorvk如何测试文本的长度跟宽度
2012-11-30 15:53 1132在使用charDirector画图时, 要确定setPlotA ... -
Java调用外部程序技巧
2012-08-24 13:43 1320http://www.yankay.com/java%E8%B ... -
java中的协变
2012-08-14 09:10 1151协变是指一个类型随着它关联的类型一起变化,有点抽像,java中 ... -
jdbm
2012-07-11 15:20 1330jdbm4也发布部分代码了, ... -
消息系统部署、维护文档 (HornetQ)
2012-03-06 08:31 0hornetq中文参考文档 一、服务器部署 目前消息服务部 ... -
netty与tomcat等nio的比较(取自zhh2009在论坛里的发言)
2012-03-05 23:58 6918源讨论: http://www.iteye.com/topic ... -
LinkedHashmap的构建函数的第三个参数引发的问题
2012-03-02 17:47 3954注意: 这里只有构造函 ... -
展示字符集编码表示
2012-03-02 13:43 1210import java.nio.ByteBuffer; ... -
使用java实现grep功能(FileChannel, Pattern, MappedByteBuffer 直接字节缓冲区,其内容是文件的内存映射区域)
2012-02-23 10:42 2958利用正则表达式查找一系列文件,类似于grep功能. 演示了 N ... -
并发--Effective Java的一小段代码
2012-02-20 17:14 1204import java.util.concurrent.T ... -
JAVA使用EPoll来进行NIO处理的方法
2012-02-14 09:20 1030JDK 6.0 以及JDK 5.0 update 9 的 ni ... -
nginx 预压缩(gzip)静态文件
2012-01-31 10:01 1708转自: http://willko.iteye.com/blo ... -
java里的枚举
2011-12-30 15:03 1156参考: http://www.ibm.com/develope ... -
Android ListView pull up to refresh 改造(转)
2011-11-03 09:25 2096转自: http://dengyin2000.iteye.co ... -
Android中dp和px之间进行转换
2011-11-03 09:02 2258在xml布局文件中,我们既可以设置px,也可以设置dp(或者d ... -
使用getIdentifier()获取资源Id
2011-10-31 12:15 8456使用getIdentifier()获取资源Id int i ... -
项目中用到的一个小工具类(字符过滤器)
2011-10-25 09:08 1053见: http://javatar.iteye.com/blo ... -
Android缩略图类源代码
2011-08-17 22:00 1433Android 2.2开始新增的缩略图类ThumbnailUt ... -
局部类访问外部final变量
2011-01-26 12:21 1144在局部类, 我们要更新封闭作用域用的变量, 这一般来说是不容易 ...
相关推荐
总结,"java servlet上传下载工具类"是Java Web开发中一个实用的组件,它封装了复杂的文件操作逻辑,使开发者能更高效、安全地处理文件上传和下载任务。这个工具类基于"孤傲苍狼"的实现,具有较高的稳定性和灵活性,...
Java开发Servlet时,使用JDBC(Java Database Connectivity)工具类是一种常见的操作,它允许程序员与各种类型的数据库进行交互。在给定的描述中,我们提到的是一个自定义封装的JDBC工具类库,这个库提供了数据库...
总结来说,ServletAPI是Java Web开发的核心,提供了处理HTTP请求的强大工具,结合JSP可以构建出复杂的Web应用程序。通过学习和掌握ServletAPI,开发者可以更好地理解和构建服务器端逻辑,提升Web应用的性能和用户...
在深入探讨这个工具类之前,我们首先需要理解Servlet的基本概念。Servlet是Java编程语言中用于扩展服务器功能的接口,主要用于Web应用程序。它是由Java Servlet API定义的,允许开发者创建动态响应HTTP请求的服务。 ...
在Java Web开发中,Servlet是一种用于扩展服务器功能的Java类,它可以处理来自客户端(通常是浏览器)的请求,并向客户端发送响应。在这个特定的场景中,"java下载类(servlet)"指的是一个使用Servlet技术来实现...
在IT行业中,文件上传下载是Web应用中常见的功能,尤其在服务器端编程中,Servlet扮演着重要的角色。Servlet是Java编程语言中用于扩展服务器功能的接口,它可以在接收到HTTP请求后进行处理,并向客户端返回响应。在...
以下是对"java文件上传下载工具类"这一主题的详细解释。 首先,让我们了解文件上传。在Web应用中,用户可能需要上传文件,如图片、文档或视频。Java通过Servlet API提供了处理文件上传的功能。Servlet 3.0及以上...
导入`javax.servlet.jar`后,确保你的IDE或构建工具已经更新了类路径,这样编译器和运行时环境才能找到所需的类。 5. **Tomcat和Java EE服务器** `javax.servlet.jar`通常是Java EE兼容服务器(如Tomcat、Jetty、...
NetBeans提供了可视化的工具来创建Servlet类,设置部署描述符(`web.xml`),以及进行调试和测试。 在这个项目中,`readme.txt`可能是项目说明文档,详细描述了项目的使用方法、注意事项以及可能遇到的问题。而`...
总的来说,BeanUtil工具类是Java Web开发中的实用工具,它简化了Servlet处理表单数据和JavaBean之间数据转换的过程,让代码更简洁、更易于维护。在学习和使用BeanUtil时,还需要了解其潜在的类型转换问题和安全性...
3. **文件上传工具类**:文件上传是Web应用中的常见功能,Java提供了Servlet API来处理文件上传请求。Apache的Commons FileUpload库提供了一套方便的工具类,可以解析多部分请求,将文件保存到服务器。这类工具类...
总的来说,Servlet API JAR是Java Web开发不可或缺的一部分,它提供了处理HTTP请求的核心工具,使得开发者可以专注于业务逻辑,而不是底层网络通信的复杂性。通过理解和熟练运用Servlet API,可以创建高效、可扩展的...
通常,Servlet API的源码会包含在像servlet.jar这样的库文件中,开发者可以通过反编译工具查看或下载官方提供的源码包。 在Java EE环境中,Servlet API是通过Web容器(如Tomcat、Jetty等)来支持的。开发者编写实现...
在Java Web程序开发中,由于Web容器内部使用编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码的现象。由于Web容器使用了ISO-8859-1的编码格式,所以在Web应用的业务处理中也会使用ISO-...
- 使用Maven或Gradle等构建工具时,可以在pom.xml或build.gradle文件中添加对应的依赖,这样在构建过程中会自动下载并引入这些库。 5. **Servlet生命周期** - 初始化:当Servlet首次被请求或者在web.xml中配置了`...
这里我们关注的是一个自定义的Util工具类,它特别针对Excel2007格式进行了优化,同时也兼容其他版本的Excel处理。这个工具类结合了文件上传、JSON解析以及Form表单提交等技术,提供了强大的文件处理能力。 首先,让...
本资源提供了两种实现方式:基于Servlet和Struts2(Action)的验证码工具类。以下是对这两个版本的验证码工具类的详细解释。 ### Servlet版验证码工具类 1. **验证码生成**: Servlet版本的验证码工具类通常会...
Servlet API提供了许多工具类,如`RequestDispatcher`用于请求转发和重定向,`Cookie`用于管理客户端的持久性数据,`Session`用于跟踪用户会话。 七、Servlet与JSP的配合 Servlet通常用于处理业务逻辑,而JSP则专注...
在没有使用像Maven或Gradle这样的依赖管理工具的情况下,手动下载和管理像`servlet-2.5.jar`这样的库文件是非常常见的做法。 总结来说,"servlet-2.5.jar"是Java Servlet API 2.5版本的实现,它为开发者提供了处理...
Servlet模拟器是一种工具,它能够帮助开发者理解和测试Servlet程序,而无需实际部署到Web服务器上。在这个场景下,我们主要关注两个关键知识点:servlet的配置与解析,以及XML解析。 首先,让我们深入了解servlet。...