- 浏览: 1573873 次
- 来自: 上海
文章分类
- 全部博客 (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 948public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2233经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5598package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 915import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1023/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 961//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1790更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1374import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 781import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2369import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 885// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1132import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 767import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1112import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3848import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 928/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 980import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1802Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 967/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2180package out; import ja ...
相关推荐
servlet实现上传文件和下载文件的方法,在浏览器中输入http://ip:port/servletName?path这种方式将客户端文件上传至服务器端,简单的例子,servletName参照web.xml path参照servlet中写的参数
java 写的文件上传下载的例子,可以做简单图片文件服务器
一个简单的Java文件上传servlet接口,文件上传成功后返回json格式响应数据,app可以调用此接口上传图片等文件到服务器,获取资源网络路径url
1.6 与 Java Servlet 规范 2.5 版本间的兼容性 ..............................................................................................14 1.6.1 监听器(Listener)顺序 .................................
答:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是类servlet。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来...
【Java毕业设计】简单的java servlet技术包含jsp文件与数据库完整酒店后台包含前台订购系统毕业设计作品
一个用Servlet和jsp写的一个登录小例子。
下面小编就为大家带来一篇Java Servlet简单实例分享(文件上传下载demo)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
swf+java+servlet多文件上传单个进度条显示,简单实用,缺点项目中上传多个文件使用一个进度条显示传输进度
这是一个用java写的简单地文件上传(逻辑有点儿乱、需完善)、文件下载的demo,在文件下载中解决了下载文件标题乱码的问题,文件下载的乱码在ie,firefox, google chrome中已经测试过
简单的javaservlet技术包含jsp文件与数据库完整酒店后台包含前台订购系统毕业设计作品.zip
在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。 实现过程
Extjs+java+swf多文件上传进度条显示项目 采用了swf插件 后端使用java servlet 项目简单使用 页面美观,希望能多交流
这个基于Servlet的简易手机网上商城是一个完整的Java Web项目,适用于初学者或中级开发者。它包含了前端页面、后端逻辑和数据库设计。 前端页面使用JSP、HTML、CSS和JavaScript技术,具有响应式设计,适应不同尺寸...
一个支持简单增删查改的Java Web项目,软硬件环境基于Macbook Air M2+macOS Ventura 13.1+IntelliJ IDEA 2022,技术栈为:Java Servlet+JDBC。全部完整代码!!亲测有效!!详细教程请移步...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
jsp+servlet+jdbc实现简单的购物车实例,购物数据通过session存储 1、加入购物车时,把数据保存在session中 2、点击系统退出时,购物车中的数据插入到数据库购物车表 3、再次登录时,查询数据库购物车表的数据加载到...
本项目是一个基于Java语言开发的servlet简易在线购物系统,包含443个文件,主要文件类型包括Java类文件、Java源代码、图片、JSP页面、PNG图片、JAR包、XML配置文件、GIF动画、SQL数据库文件和MySQL数据库文件。...
主要介绍了简单操作实现Java jsp servlet文件上传过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一个Javaservlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。 所有的...