文件上传进度条
还记得在前面的文章我们实现的功能当中有文件上传的功能吗?今天我们来为文件上传美化一下,添加一个文件上传的进度条来实时显示文件上传的进度。
说干就干!实现方法很简单,也就不使用任何插件了,我们的文件上传是使用ajax实现的。那我们就在ajax中获取到文件上传的实时信息,并这些实时信息显示在Bootstrap样式库中的进度条中即可。
获取ajax上传文件时,实时的上传进度信息。
利用ajax中的xhr字段参数来实现进度条功能。
在Bootstrap样式库中找到进度条样式拷贝到我们的代码中。
将进度条样式作为一个模态框放在我们的页面中,在需要时显示和隐藏。
完成,简单吧!我们来试一试!
启动后台manager系统并登录后进入广告管理页面。
点击新增按钮添加广告图片,选择好图片后点击确定,上传图片。
因为我们的进度条在大的百分之百后会隐藏掉,速度很快,不容易截图,所以我在隐藏掉之前放置了一个alert来阻塞弹出,只要我们不关闭这个alert,进度条就会显示。
关闭alert,因为进度条已经达到了百分之百,进度条的模态框就会隐藏掉。
ok,验证完毕。
quartz石英调度
接下来我们了解一下quartz石英调度,石英调度通常用于定时任务。
石英调度:
quartz:-石英;定时任务;
是由原生java完成();
quartz:非常方便的进行定时任务调度;
1、核心包
;
2、整合包;
Spring框架内置支持的,核心并没有导入,我们需要导入;
;
SpringMVC支持的第三方的框架集成,第三方功能的集成;
(复杂功能)
3、Spring文档,查看任务调度的使用;
指定哪个对象的哪个方法需要何时运行即可;
1.1)、配一个jobDetail:指定要运行哪个对象的哪个方法;
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="exampleBusinessObject" />
<property name="targetMethod" value="doIt" /></bean>
1.2)、配一个触发器,指定何时完成
<!-- 2、配置触发器:指定何时触发这个方法 -->
<!-- 使用cron表达式指定触发时间 -->
<!-- 0 0 6 * * ?;6到7位以空格隔开
秒 分 时 日 月 周 年
0 0 6 * * ? 可以省略;
0 0-5 6 * * ?
0 1,3,5,7,9 6 * * ?
5/5: *任何秒 / 5步长,每5秒做一次这个任务 第5秒开始,每隔5秒触发一次;5,10,15,20
-->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="exampleJob" />
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="*/5 * * * * ?" />
</bean>
1.3)、配置Scheduler使用触发器进行任务调度
<!-- 3、配置任务调度框架使用那些触发器,触发此次任务; SchedulerFactoryBean ===== Scheduler Scheduler:调度; -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 添加这个任务要使用的多个触发器,同时生效 -->
<!-- 指定使用哪些触发器触发任务 -->
<ref bean="cronTrigger" />
</list>
</property>
</bean>
2)、cron表达式
1)、能出现的通配符
, - * /:出现在
(1)*:表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。
(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
(3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
(5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
添加石英调度依赖。
新建HelloQuartzService类。
新建spring-quartz.xml配置文件
运行就可以在控制台看见打印结果啦!!!
简单吧!!!