- 浏览: 360212 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
missfmaster:
这框架好特么底层。
Terracotta设计原理分析--(部分内容来自官方描述) -
小黄牛:
很好不错!分享一个在电商购物支付流程中,在各大参与者系统中可能 ...
分布式事务设计-两段式提交 -
zhglhy:
学习了,感谢分享
JAVA垃圾回收分析 -
talentluke:
如果在事务一中出现故障,数据库是可以回滚但消息队列不能回滚,队 ...
用消息队列和消息应用状态表来消除分布式事务(转载) -
langmanxingkong123:
谁说jedis不能存集合类的数据。乱说。。。
redis jredis jedis 使用
ssh2中文件带进度条的上传的demo有很多,但是大多数都是集成了上传的插件来实现的,如:swfupload,dwr等,功能也是非常强大,但是本上传组件没有集成任何插件来进行带进度条上传实现的。请大家在下载后,运行程序前了解本程序实现的原理,我在这里简单介绍一下实现的过程.
struts2上传原理:
struts2自身是封装了上传的操作的,它主要的实现的过程是先通过上传拦截器拦截后,对上传的文件大小进行控制(如果你对struts2的文件大小进行了限制的话,默认好像是允许上传20M内的文件),文件超过指定大小会抛出异常,如果没有超出指定大小,上传的文件会先存储在配置的临时文件夹下,文件上传到临时文件夹后,才会对临时文件夹下的文件进行拷贝,拷贝到自己指定的文件夹下。
对实现进度条功能造成的影响:
那么这样一来,你就无法真实来实现进度条功能,原因很简单,它有一个上传到临时文件夹的过程,然后才会进行拷贝到你指定的文件夹,那么你就无法来进行同步,获得上传的进度,我在网站上看到某些文件中说,只有等待它存储在临时文件夹后,在复制到目标目录时,进行进度判断,这样做中间有个等待过程,哪里还叫真正的进度条上传,这只是一种说法,还有很多种这样没有意义的想法,我就不举例了.
本程序实现方式:
1.附件大小限制:没有通过js脚本来验证文件大小,因为现在的浏览器版本太多,js验证文件大小会产生很多异常情况,而且大多数的js脚本程序都要通过设置安全级别来对文件大小作出判断,有的脚本不需要设置安全,但是它不能满足所有浏览器,我测试过,这里就不多啰嗦了.我是直接在后台对struts2抛出的异常的信息截取.然后通过ajax反映到前台来限制文件大小的,本程序设置struts2的上传文件大小限制为30M,如果上传30M以上的文件,会很快反映到前台
2.在上传到临时文件夹时,利用线程同时进行上传进度的跟踪,然后通过ajax,把跟踪的进度结果实时反映到前台,显示进度
3.因为考虑到该程序的特性,因此封装成标签,在想调用上传组件的jsp导入标签即可使用.
本程序实现功能:
1. 支持多个文件上传
2. 对上传文件进行增加、删除、清空本次上传文件,取消正在上传的文件等操作
3. 对上传文件前检测同名文件,以及上传文件的大小限制
4. 包含中文名称的文件上传、附件上传成功后,在数据库表中插入一条记录,表中file_src_name记录一个随机字符,
在下载时候通过该字段找到相应的附件
5. 上传文件时候, 反映上传进度
二次开发本程序:
本程序目录结构:
com/bestsoft/ssh目录
bean/upload目录下:实体映射类
comm目录下:工具类
comm/upload目录下:上传标签类
dao目录下:数据访问接口和实现类
databean目录下:数据传输类
service目录下:业务逻辑接口和实现类
web/action/upload目录下:上传实现类
doc目录下:数据库文档及脚本、标签、设计等说明文件
其他目录下就是配置文件,jsp文件,tld文件等
运行程序:
下载本程序后,导入工程,导入相应的jar包,导入数据库文件,修改src下init.properties文件的配置信息(用户名,密码,数据库信息),本程序在tomcat5以上版本运行,ide为eclipse,数据库为mysql(如果你不是用mysql,自己手动进行修改成其他数据库),修改完成后即可运行本程序。
说明:
s2sh的jar包比较多,这里就不上传了,如果说需要jar包的话,可以留言给我,我再进行上传,因为本程序主要是以上传功能为主,因此在dao,service的等代码上简单的进行了编写.
程序截图:
初始界面:
已经上传成功的文件:
正在上传的文件:
上传文件时,对操作的限制:
禁止上传同名的附件:
上传文件大小的限制:
- ssh.rar (106 KB)
- 下载次数: 5253
- jar1.rar (7.4 MB)
- 下载次数: 6719
- jar2.rar (4.6 MB)
- 下载次数: 5355
- jar3.rar (6.5 MB)
- 下载次数: 5792
评论
2012-12-24 10:29:54,093 [http-8080-1] [org.apache.struts2.dispatcher.Dispatcher-warn:49] [WARN] - Could not find action or result
There is no Action mapped for namespace / and action name upload-iframeRequest. - [unknown location]
对实现进度条功能造成的影响:
那么这样一来,你就无法真实来实现进度条功能,原因很简单,它有一个上传到临时文件夹的过程,然后才会进行拷贝到你指定的文件夹,那么你就无法来进行同步,获得上传的进度,我在网站上看到某些文件中说,只有等待它存储在临时文件夹后,在复制到目标目录时,进行进度判断,这样做中间有个等待过程,哪里还叫真正的进度条上传,这只是一种说法,还有很多种这样没有意义的想法
但是根本没有解决这个问题,upload对象只有临时文件生成结束才会有值,这样还是相当于上传完了才开始显示进度条,这个进度条这个时候只是临时文件到最后文件的一个读写操作。。还用了一个多线程。。。这太无聊了。大家上传一个300M的文件就能看出问题了,或者本地起服务器之后,从别的浏览器访问。
没有对楼主不敬的意思,除了这一点之外的代码写的都不错,但这恰恰是最关键的问题。遗憾的是我也没找到解决这个问题的办法。继续。。。。
我在代码中写过,在上传到临时文件目录的同时开启了另一个线程进行同时上传到新目录,而不是等临时目录中文件上传完成后在进行真实拷贝!!!
对实现进度条功能造成的影响:
那么这样一来,你就无法真实来实现进度条功能,原因很简单,它有一个上传到临时文件夹的过程,然后才会进行拷贝到你指定的文件夹,那么你就无法来进行同步,获得上传的进度,我在网站上看到某些文件中说,只有等待它存储在临时文件夹后,在复制到目标目录时,进行进度判断,这样做中间有个等待过程,哪里还叫真正的进度条上传,这只是一种说法,还有很多种这样没有意义的想法
但是根本没有解决这个问题,upload对象只有临时文件生成结束才会有值,这样还是相当于上传完了才开始显示进度条,这个进度条这个时候只是临时文件到最后文件的一个读写操作。。还用了一个多线程。。。这太无聊了。大家上传一个300M的文件就能看出问题了,或者本地起服务器之后,从别的浏览器访问。
没有对楼主不敬的意思,除了这一点之外的代码写的都不错,但这恰恰是最关键的问题。遗憾的是我也没找到解决这个问题的办法。继续。。。。
发表评论
-
王者荣耀是用什么语言开发的!
2020-10-29 19:24 12162017年什么最火? 不用问,肯定是人人都“ ... -
王者荣耀是用什么语言开发的!
2020-10-29 19:04 02017年什么最火? 不用问,肯定是人人都在撸的“王 ... -
用消息队列和消息应用状态表来消除分布式事务(转载)
2012-11-21 11:12 3341由于数据量的巨大,大 ... -
CA认证原理以及实现(下)
2012-09-10 20:38 17105在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。 ... -
CA认证原理以及实现(上)
2012-09-10 20:00 49490原理基础数字证书为发 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(下)
2012-06-28 21:58 1488云管理平台云是IT实现,是造出来的,不是买来的。我们可以买服务 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(上)
2012-06-28 21:08 1700云之所以热,是因为现在以及未来市场的业务推动力(回报率),现在 ... -
Terracotta Server[兵马俑]集群
2012-06-14 01:23 10826Terracotta的介绍以及原理在我之前的文章中已经做了相关 ... -
Local Cache + Server Cache
2012-05-27 00:01 785其实下面说的一些设计思路来源于一些开源的缓存软件,比如Ehca ... -
Web请求-异步模式
2012-05-26 22:45 268Comet技术已经不算是 ... -
分布式事务设计-三段式提交
2012-05-25 20:24 5552前面的文章提到的两段 ... -
分布式事务设计-两段式提交
2012-02-08 17:16 14240事务是一个很重要的概念,它必须满足ACID特性,在单机的数据库 ... -
架构设计要“注意点”
2011-09-08 14:24 370资源有限注意点:系统设计的时候总是估摸不到会有大数据量从远端传 ... -
替代分布式事务策略
2011-06-10 19:59 2256由于数据量的巨大,现 ... -
你符合成为一个架构设计师的特征吗?
2011-03-30 12:28 557其实想写这篇文章也是 ... -
缓存客户端集群
2011-03-18 17:12 1688Memcached Cache是集中式Cach ... -
Netlog中数据库演变过程
2011-03-18 15:45 476Netlog拥有4000万活跃用户,每个月有超过5000万的独 ... -
如何检测一台机器是否宕机?(转载)
2011-03-15 20:19 1770检测一台机器是否宕机 ... -
淘宝OceanBase设计(转载)
2011-03-14 16:26 1377OceanBase有什么特点 ... -
EhCache辅助spring Acegi
2010-09-14 16:36 2164因为在项目中想通过缓存来acegi的整合,因此选用了Ehcac ...
相关推荐
在这个项目中,SSH2框架与Ajax技术结合,实现了一个带进度条的文件上传功能,并且这个功能已经被封装成了自定义标签,方便在页面上直接使用。 首先,让我们深入理解SSH框架的每个组件: 1. **Struts2**:Struts2是...
而随着Ajax技术的普及,一种结合SSH(Struts + Spring + Hibernate)框架与Ajax技术实现的上传进度条方案应运而生。这种方案不仅能够实时展示文件上传进度,还能够模拟出类似QQ邮箱等知名平台的大文件上传窗体功能,...
SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中的一个经典组合。在这个场景中,我们将聚焦于SpringMVC部分,它负责处理文件上传的功能。SpringMVC是Spring框架的一部分,提供了一种优雅的方式来处理...
在“Ajax异步刷新的实现 带数据库”的主题中,我们将探讨如何利用Ajax技术配合SSH(Spring、Struts2、Hibernate)框架来实现在不刷新整个页面的情况下与数据库进行交互,更新页面内容。SSH框架是Java Web开发中常用...
7. **SSH/SSI实时预览**:Struts2,Spring,Hibernate整合。 8. **数据库分页显示**:Criteria API,HQL,SQL。 9. **Spring对象事件**:ApplicationEvent,ApplicationListener。 10. **事务管理**:Spring的@...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...