- 浏览: 1590468 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
package com.bjdata.bjproduct.presentation.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.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bjdata.bjproduct.common.Constants; import com.bjdata.bjproduct.persistence.system.model.User; import com.sun.xml.internal.fastinfoset.stax.events.Util; public class FileDownload extends HttpServlet { private int bufferSize=2048; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } @Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub String bsize=config.getInitParameter("bufferSize"); if(Util.isEmptyString(bsize)){ bufferSize=Integer.parseInt(bsize); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action=""; try{ request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String id=request.getParameter("id"); String company=request.getParameter("company"); action="/infoManager/getContract.do?id="+id+"&company="+company; //文件名必须带后缀名,否则 下载后是未知类型的文件 String filename=request.getParameter("filename"); String path = request.getParameter("path"); path=request.getSession().getServletContext().getRealPath("/")+path; User sessionuser = (User) request.getSession(true).getAttribute( Constants.SESSION_USER); if(sessionuser!=null){ //检测文件是否存在 File file=new File(path); if(!file.exists()){ request.setAttribute("msg","<script type=\"text/javascript\">alert(\"指定的文件不存在!\");</script>"); request.getRequestDispatcher(action).forward(request, response); }else{ response.reset(); //将 文件流写入到前端浏览器 response.setHeader("Content-disposition", "attachment;filename="+convertFileName(filename)); ServletOutputStream sops=response.getOutputStream(); FileInputStream fis=new FileInputStream(file); copyStream(fis,sops,true); fis.close(); sops.close(); fis=null; sops=null; file=null; } } else{ //response.sendRedirect("index.jsp");(如果是重定向:index.jsp 中需要通过js控制跳到top.location.href="login.jsp") //下面实现了 top.location.href="login.jsp" 的效果 response.getWriter().print("<script type=\"text/javascript\">alert(\"请先登录后再下载!\");top.location.href='/bjproduct/';</script>"); } }catch(Exception e){ request.setAttribute("msg", "<script type=\"text/javascript\">alert(\"文件下载失败,请稍后再试...\");</script>"); request.getRequestDispatcher(action).forward(request, response); e.printStackTrace(); } } /** * 复制流 到 前端浏览器 * @param source 源文件输入流 * @param dest 输出流 * @param flush * @return */ private final long copyStream(InputStream source,OutputStream dest,boolean flush){ int bytes; long total=0l; byte [] buffer=new byte[bufferSize]; try { while((bytes=source.read(buffer))!=-1){ if(bytes==0){ bytes=source.read(); if(bytes<0) break; dest.write(bytes); if(flush) dest.flush(); total+=bytes; } dest.write(buffer,0,bytes); if(flush) dest.flush(); total+=bytes; } } catch (IOException e) { throw new RuntimeException("IOException caught while copying.",e); } return total; } //转换文件名的方法 在strust.xml中会用到 public String convertFileName(String cfilename){ try { cfilename=new String(cfilename.getBytes(),"ISO-8859-1"); } catch (Exception e) { e.printStackTrace(); } return cfilename; } }
web.xml
<!-- filedownload --> <servlet> <servlet-name>FileDownload</servlet-name> <servlet-class>com.bjdata.bjproduct.presentation.servlet.FileDownload</servlet-class> <init-param> <param-name>bufferSize</param-name> <param-value>2048</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>FileDownload</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping>
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 999public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2282经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5654package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 990import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1055/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1010//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1826更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1417import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 816import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2398import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 925// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1174import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 802import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1145import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3893import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 965/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1023import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1842Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1005/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2232package out; import ja ...
相关推荐
Java Servlet是一种Java编程语言...通过这个简单的Java Servlet实现,我们可以为用户提供一个安全、可控的文件下载服务。理解这些基本步骤和相关的HTTP概念,将有助于你更好地设计和实现Web应用程序中的文件下载功能。
以下是一个简单的示例,展示如何创建一个名为`FileDownLoadServlet`的Servlet,用于提供PDF文件下载: 1. 首先,我们需要在Servlet中声明并实现`doGet`方法,这是HTTP GET请求的主要处理点: ```java @Override ...
在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...
本示例"Java(Servlet)上传文件的demo"提供了一个简单的文件上传功能,适用于初学者理解和实践。以下是对这个demo的详细解析: 1. **Servlet基本概念**: Servlet是一个Java类,遵循Servlet API规范,它扩展了...
本文将深入探讨如何使用Servlet实现一个简单的文件上传接口,并以JSON格式返回响应数据。 首先,我们需要了解Servlet接口。Servlet是Java编程语言中用于扩展服务器功能的接口,它允许开发者编写代码来处理HTTP请求...
Java Servlet和SWFUpload是两种不同的技术,但它们在处理大文件上传方面有着共同的应用。在Web开发中,用户可能需要上传大文件,如视频、音频或大型文档,这就需要服务器端具有处理大文件上传的能力。Java Servlet是...
在本实例中,我们主要探讨如何使用Java的Servlet技术与MySQL数据库进行交互,这是一个基于DAO(Data Access Object)模式但不使用Bean的简单应用。首先,让我们深入了解一下Servlet、DAO模式以及MySQL数据库的基础...
servlet实现上传文件和下载文件的方法,在浏览器中输入http://ip:port/servletName?path这种方式将客户端文件上传至服务器端,简单的例子,servletName参照web.xml path参照servlet中写的参数
以下是一个简单的Servlet文件下载示例代码片段: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fileName = "example...
在提供的文件名列表中,`MoreFileUpLoadServlet.java`和`OneFileUpLoadServlet.java`可能分别代表处理多个文件上传和单个文件上传的Servlet实现。它们可能与上述示例类似,只是在处理多个文件时,会有一个循环来处理...
Java Servlet 文件上传是Web开发中的一个关键功能,它允许用户通过HTTP协议将本地文件传输到服务器。在Java中,我们通常使用Servlet API和第三方库如Apache Commons FileUpload来实现这一过程。Apache Commons ...
一个简单的Servlet可以记录并展示请求次数,或者返回服务器当前时间,这通常通过实例化Servlet时的成员变量和Java的日期类实现。 二、HTTP协议 2.1 什么是HTTP协议 HTTP(超文本传输协议)是互联网上应用最广泛的一...
总结一下,这个"Servlet文件下载项目"展示了如何使用Servlet技术实现一个简单的文件下载服务。通过理解Servlet的工作原理、HTTP响应头的设置以及Java I/O流的使用,我们可以构建出更复杂、更安全的文件下载系统。这...
- **配置与部署**: Servlet的配置文件(通常为web.xml)定义了Servlet的名称、类名以及其他参数,这些信息用于指导Servlet容器如何加载和管理Servlet实例。 - **请求处理**: Servlet通过`service`方法接收并处理...
在web.xml文件中,我们可以通过`<servlet>`和`<servlet-mapping>`元素来配置Servlet。例如: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> ...
在Java Web开发中,...总的来说,"基于Servlet实现文件的上传与下载"是Java Web开发者必须掌握的一项技能,它有助于理解和实践Web服务的核心机制。通过不断的实践和学习,你可以创建更高效、更安全的文件管理系统。
在Java Servlet中,处理文件上传和下载是常见的功能需求。在这个压缩包文件"TestFileUploadAndDownLoad"中,可能包含了实现这些功能的示例代码。 文件上传: 在Java Servlet中,我们通常使用`HttpServletRequest`...
【基于Java Servlet的题库系统】是一个非常适合初学者探索Java Web开发基础的项目。这个系统主要依赖于Servlet技术,这是一种用于构建动态Web应用程序的技术,它允许服务器端代码处理客户端的请求并返回响应。在这个...
以下是一个简单的文件下载Servlet示例: ```java @WebServlet("/FileDownloadServlet") public class FileDownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, ...
总结来说,实现Servlet文件上传下载需要理解Servlet生命周期、HTTP请求处理、多部分数据解析以及文件I/O操作。Apache Commons FileUpload库简化了这一过程,但理解其背后的原理对于解决可能出现的问题和优化性能至关...