java如何实现进度条开发的流程?详细实例展示

BSO 2020-08-28 16:37:49 java常见问答 3999

在科学技术快速发展的今时今日,java的应用在其中显得越发重要起来。今天主要为大家介绍一下如何实现java进度条开发的过程,并且通过一个实例来为大家展示。

在文章最开始,我们先说一下它的流程。第一步是访问启动任务servlet,然后是启动任务servlet开启任务,并且跳转到进度条展示页面。紧接着页面就绪,就调用(进度参数获取servlet),此后进度条展示页面定时调用,直到传递过来为100%。最后获取参数servlet从session中取出任务,并获取任务中的进度参数。返回进度参数给进度展示页面。

下面是各个文件实例展示,它的工程是web工程。

⑴进度条schedule.css文件,代码如下:

body
{
    margin: 0;
    padding: 0;
    font - family: "宋体";
    font - size: 12 px;
    line - height: 1.8 em;
    color: #392b60;
    height:100%;
    }
/*最外层的div样式*/
.progressOutside {
    border:red 1px dotted; /*边框1像素的红色虚线*/
    width:350px; /*宽度是350像素*/
    position:relative; /*相对body位置*/
    margin-left:-175px; /*整个div宽度是350,-175px就是向右移动了175像素.正好居中.*/
    left:50%; /*左边框距浏览器左边框是屏幕的一半.*/
    margin-top:150px; /*上边框相对于body顶部35%*/
}
/*标题div样式*/
.progressTitle {
    border:greenyellow 1px solid;
    line-height:30px; /*设置行高
    padding:0 15px 0; /*内填充 上:0, 右:15像素, 下:0*/
}
/*内容div样式*/
.progressContent {
    border:purple 1px double;
    padding:15px;
    height:40px !important;
}
/*进度条框*/
.progress {
    background:# f0f4f9 url(.. / imgs / 2. gif) repeat - x top;
    border: yellow 2 px solid;
    height: 15 px;
    margin: 10 px 0 0 0!important;margin: 35 px 0 0 0;
}
/*进度条实体*/
.progressSchedule
{
    border: red 1 px double;
    background: url(.. / imgs / 1. gif) repeat - x left top;
    width: 3 % ;
    height: 15 px;
}
/*进度提示框*/
.progressPercent
{
    text - align: center;
    border: green 1 px solid;
    height: 15 px;
    position: absolute;
    display: block;
    left: 125 px;
    margin - top: -17 px;
    width: 100 px;
}
/*百分比提示框*/
.textProgress
{
    border: orange 1 px solid;
    font - weight: bold;
    font - family: tohama;
}

⑵页面文件invoke.jsp 我们使用jquery,代码如下:

<html>
    <head>
        <link href="<%=basePath%>css/schedule.css" rel="stylesheet" type="text/css">
        <script type="text/javascript" src="<%=basePath %>js/jquery-1.7.2.js"></script>
        <script type="text/javascript" src="<%=basePath %>js/get.js"></script>
        <title>Insert title here</title>
    </head>
    <body>
        <div class="progressOutside">
            <div class="boxTitle progressTitle" id="divName">进度条标题在此</div>
            <div class="boxContent progressContent">
                <div class="progress" id = "progress">
                    <div class="progressSchedule" style="width:0%" id="styleId"></div>
                    <div class="progressPercent">
                    完成<span class="textProgress" id="bfb"></span>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

⑶使用的ajax get.js文件,代码如下:

$(document)
    .ready(function ()
    {
        getPercent();
    });

function getPercent()
{
    $.post("process"
    , {
        userName: 'ab'
    }, function (data)
    {
        styleId.style.width = data;
        $("#bfb")
            .text(data);
        if (data != '100%')
        {
            window.setTimeout(getPercent, 100);
        }
        else
        {
            if (confirm("Finished?"))
            {
                window.location.href = "/servlet1/index.html";
            }
        }
    });
}
4. 启动线程servlet Index.java

⑷启动线程servlet Index.java,代码如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    Progress p = (Progress) request.getSession()
        .getAttribute("progress");
    if (p != null)
    {
        System.out.println("Thread Running!");
        throw new RuntimeException("线程被占用!");
    }
    else
    {
        Progress progress = new Progress();
        request.getSession()
            .setAttribute("progress", progress);
        progress.start();
    }
    response.sendRedirect(request.getContextPath() + "/invoke.jsp");
}

⑸线程任务类,要做的任务写在这个里面Progress.java,代码如下:

public class Progress extends Thread
{
    Logger logger = Logger.getLogger(Process.class);
    //Getter方法省略
    private String percent = "";
    //Getter方法省略
    private boolean over = false;
    public void run()
    {
        for (int i = 1; i <= 100; i++)
        {
            try
            {
                Thread.sleep(1 * 100);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            percent = i + "%";
        }
        if (logger.isDebugEnabled())
        {
            logger.debug("thread run over!");
        }
        over = true;
    }
}

⑹取参数servlet,此servlet是要被页面定时的调用,Process.java。当它被调用时,会取出当前任务线程,获取当前任务线程中的进度参数,同时将进度参数传到页面。代码如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    Progress p = (Progress) request.getSession()
        .getAttribute("progress");
    if (p != null)
    {
        String percent = p.getPercent();
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        response.getWriter()
            .write(percent);
    }
    if (p.isOver())
    {
        request.getSession()
            .removeAttribute("progress");
    }
}

以上就是关于java实现进度条开发流程的相关内容以及代码实例展示,想要了解更多java经典例子,敬请关注奇Q工具网。

推荐阅读:

java进度条功能的实现原理是什么?实例展示

java运算符的分为哪几类?详细实例展示。

java图书信息查询实例