文件上传进度条

  还记得在前面的文章我们实现的功能当中有文件上传的功能吗?今天我们来为文件上传美化一下,添加一个文件上传的进度条来实时显示文件上传的进度。

说干就干!实现方法很简单,也就不使用任何插件了,我们的文件上传是使用ajax实现的。那我们就在ajax中获取到文件上传的实时信息,并这些实时信息显示在Bootstrap样式库中的进度条中即可。

获取ajax上传文件时,实时的上传进度信息。

java 多个进度条 界面 java任务进度_进度条

利用ajax中的xhr字段参数来实现进度条功能。

java 多个进度条 界面 java任务进度_文件上传进度条_02

在Bootstrap样式库中找到进度条样式拷贝到我们的代码中。

java 多个进度条 界面 java任务进度_进度条_03

将进度条样式作为一个模态框放在我们的页面中,在需要时显示和隐藏。

java 多个进度条 界面 java任务进度_java 多个进度条 界面_04

完成,简单吧!我们来试一试!

启动后台manager系统并登录后进入广告管理页面。

java 多个进度条 界面 java任务进度_java 多个进度条 界面_05

点击新增按钮添加广告图片,选择好图片后点击确定,上传图片。

java 多个进度条 界面 java任务进度_quartz石英调度_06

因为我们的进度条在大的百分之百后会隐藏掉,速度很快,不容易截图,所以我在隐藏掉之前放置了一个alert来阻塞弹出,只要我们不关闭这个alert,进度条就会显示。

java 多个进度条 界面 java任务进度_进度条_07

关闭alert,因为进度条已经达到了百分之百,进度条的模态框就会隐藏掉。

java 多个进度条 界面 java任务进度_文件上传进度条_08

ok,验证完毕。

 

  quartz石英调度

接下来我们了解一下quartz石英调度,石英调度通常用于定时任务。

石英调度:

     quartz:-石英;定时任务;

     是由原生java完成();

java 多个进度条 界面 java任务进度_文件上传进度条_09

 

quartz:非常方便的进行定时任务调度;

1、核心包

java 多个进度条 界面 java任务进度_java 多个进度条 界面_10

2、整合包;

     Spring框架内置支持的,核心并没有导入,我们需要导入;

     

java 多个进度条 界面 java任务进度_触发器_11


     SpringMVC支持的第三方的框架集成,第三方功能的集成;

     

java 多个进度条 界面 java任务进度_quartz石英调度_12

(复杂功能)     

java 多个进度条 界面 java任务进度_quartz石英调度_13

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分每分钟触发一次。 

 

添加石英调度依赖。

java 多个进度条 界面 java任务进度_quartz石英调度_14

 

新建HelloQuartzService类。

java 多个进度条 界面 java任务进度_进度条_15

 

新建spring-quartz.xml配置文件

java 多个进度条 界面 java任务进度_java 多个进度条 界面_16

运行就可以在控制台看见打印结果啦!!!

简单吧!!!