Java实时进度条的操纵类
package com.dotmin.web.java.progress; /** * 实时进度条操纵类 * @author Administrator */ public class ProgressBarCommon { /** * 换行符 */ private final String NEW_LINE = "\r\n"; /** * 获取进度条页面的基础HTML * @return */ public String getBaseHtml(String user, String now) { StringBuilder builder = new StringBuilder(); builder.append("<%@ page pageEncoding=\"UTF-8\"%><head>" + NEW_LINE); builder.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" + NEW_LINE); builder.append("<title>短信发送进度</title>" + NEW_LINE); builder.append("<link href=\"Sms.css\" rel=\"stylesheet\" type=\"text/css\">" + NEW_LINE); builder.append("<script language=\"javascript\" type=\"text/javascript\">" + NEW_LINE); builder.append("var g_inits = 3;" + NEW_LINE); builder.append("var g_tels = 500;" + NEW_LINE); builder.append("var g_lates = 2;" + NEW_LINE); builder.append("var g_barmax = 500;" + NEW_LINE); builder.append("//设置指定名称元素的内容" + NEW_LINE); builder.append("function setTxt(elemName, elemText){" + NEW_LINE); builder.append(" document.getElementById(elemName).innerHTML = elemText;" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//设置指定名称元素的宽度" + NEW_LINE); builder.append("function setPos(elemName, elemWidth){" + NEW_LINE); builder.append(" document.getElementById(elemName).style.width = elemWidth + \"px\";" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//根据当前位置和最大位置,获取子进度条长度" + NEW_LINE); builder.append("function getBarPos(pos, maxnum){" + NEW_LINE); builder.append(" var barpos = Math.ceil(pos * g_barmax / maxnum);" + NEW_LINE); builder.append(" if(barpos<1){" + NEW_LINE); builder.append(" return 1;" + NEW_LINE); builder.append(" }else if(barpos>g_barmax){" + NEW_LINE); builder.append(" return g_barmax;" + NEW_LINE); builder.append(" }else{" + NEW_LINE); builder.append(" return barpos;" + NEW_LINE); builder.append(" }" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//初始化个数" + NEW_LINE); builder.append("function setInits(inits){" + NEW_LINE); builder.append(" g_inits = inits;" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//总号码数" + NEW_LINE); builder.append("function setTels(tels){" + NEW_LINE); builder.append(" g_tels = tels;" + NEW_LINE); builder.append(" setTxt(\"tels\", tels);" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//清理数" + NEW_LINE); builder.append("function setLates(lates){" + NEW_LINE); builder.append(" g_lates = lates;" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//进度条1的文本, 进度" + NEW_LINE); builder.append("function b1(txt, pos){" + NEW_LINE); builder.append(" setTxt(\"txt1\", txt);" + NEW_LINE); builder.append(" setPos(\"bar1\", getBarPos(pos, g_inits));" + NEW_LINE); builder.append(" setTxt(\"tip1\", pos + \"/\" + g_inits);" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//进度条2的文本, 进度" + NEW_LINE); builder.append("function b2(txt, pos){" + NEW_LINE); builder.append(" setTxt(\"txt2\", txt);" + NEW_LINE); builder.append(" setPos(\"bar2\", getBarPos(pos, g_tels));" + NEW_LINE); builder.append(" setTxt(\"tip2\", pos);" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//进度条3的成功进度" + NEW_LINE); builder.append("function b31(pos){" + NEW_LINE); builder.append(" setPos(\"bar3\", getBarPos(pos, g_tels));" + NEW_LINE); builder.append(" setTxt(\"tip3\", pos);" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//进度条3的失败文本" + NEW_LINE); builder.append("function b32(txt){" + NEW_LINE); builder.append(" setTxt(\"txt3\", txt);" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//进度条4的文本, 进度" + NEW_LINE); builder.append("function b4(txt, pos){" + NEW_LINE); builder.append(" setTxt(\"txt4\", txt);" + NEW_LINE); builder.append(" setPos(\"bar4\", getBarPos(pos, g_lates));" + NEW_LINE); builder.append(" setTxt(\"tip4\", pos + \"/\" + g_lates);" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//发送成功" + NEW_LINE); builder.append("function succ(millisec){" + NEW_LINE); builder.append(" setTxt(\"ret_result\", \"发送成功!\");" + NEW_LINE); builder.append(" setTxt(\"ret_text\", \"群发耗时:\" + (millisec / 1000) + \"秒\");" + NEW_LINE); builder.append(" alert(\"发送成功!\");" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//发送失败的原因" + NEW_LINE); builder.append("function error(txt){" + NEW_LINE); builder.append(" setTxt(\"ret_result\", \"群发失败!\");" + NEW_LINE); builder.append(" setTxt(\"ret_text\", txt);" + NEW_LINE); builder.append(" alert(\"群发失败!\");" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("//停止发送" + NEW_LINE); builder.append("function smsStop(){" + NEW_LINE); builder.append(" try{" + NEW_LINE); builder.append(" var req;" + NEW_LINE); builder.append(" if (window.ActiveXObject) {" + NEW_LINE); builder.append(" req = new ActiveXObject(\"Microsoft.XMLHTTP\");" + NEW_LINE); builder.append(" } else if (window.XMLHttpRequest) {" + NEW_LINE); builder.append(" req = new XMLHttpRequest();" + NEW_LINE); builder.append(" } else {" + NEW_LINE); builder.append(" alert(\"当前系统不支持此操作!\");" + NEW_LINE); builder.append(" return;" + NEW_LINE); builder.append(" }" + NEW_LINE); builder.append(" req.open(\"GET\", \"SmsStopServlet\", true);" + NEW_LINE); builder.append(" req.onreadystatechange = function(){" + NEW_LINE); builder.append(" if (req.readyState == 4) {" + NEW_LINE); builder.append(" if (req.status != 200) {" + NEW_LINE); builder.append(" alert(\"中止失败!\" + req.statusText);" + NEW_LINE); builder.append(" }" + NEW_LINE); builder.append(" }" + NEW_LINE); builder.append(" };" + NEW_LINE); builder.append(" req.send();" + NEW_LINE); builder.append(" }catch(e){" + NEW_LINE); builder.append(" alert(\"出错了!\" + e.message);" + NEW_LINE); builder.append(" }" + NEW_LINE); builder.append("}" + NEW_LINE); builder.append("</script>" + NEW_LINE); builder.append("</head>" + NEW_LINE); builder.append("<table width=\"600\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\" class=\"jason_sms_word\">" + NEW_LINE); builder.append(" <input type=\"button\" onclick=\"location.href='Sendindex.jsp'\" value=\"返回首页\" />" + NEW_LINE); builder.append(" <input type=\"button\" onclick=\"location.href='TelList.jsp'\" value=\"返回群发页面\" />" + NEW_LINE); builder.append(" <input type=\"button\" onclick=\"smsStop()\" value=\"停止发送\" />" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\"><label id=\"txt1\"></label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td width=\"500\" height=\"30\">" + NEW_LINE); builder.append(" <div style=\"width:508px; height:20px; background-color:#CCC; border:double\">" + NEW_LINE); builder.append(" <div id=\"bar1\" style=\"width:1px; height:100%; background-color:#66F\"></div>" + NEW_LINE); builder.append(" </div>" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" <td> <label id=\"tip1\">0/0</label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\"><label id=\"txt2\"></label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\">" + NEW_LINE); builder.append(" <div style=\"width:508px; height:20px; background-color:#CCC; border:double\">" + NEW_LINE); builder.append(" <div id=\"bar2\" style=\"width:1px; height:100%; background-color:#66F\"></div>" + NEW_LINE); builder.append(" </div>" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" <td> 已发送<label id=\"tip2\">0</label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\"><label id=\"txt3\"></label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\">" + NEW_LINE); builder.append(" <div style=\"width:508px; height:20px; background-color:#CCC; border:double\">" + NEW_LINE); builder.append(" <div id=\"bar3\" style=\"width:1px; height:100%; background-color:#66F\"></div>" + NEW_LINE); builder.append(" </div>" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" <td> 成功数<label id=\"tip3\">0</label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\"><label id=\"txt4\"></label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\">" + NEW_LINE); builder.append(" <div style=\"width:508px; height:20px; background-color:#CCC; border:double\">" + NEW_LINE); builder.append(" <div id=\"bar4\" style=\"width:1px; height:100%; background-color:#66F\"></div>" + NEW_LINE); builder.append(" </div>" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" <td> <label id=\"tip4\">0/0</label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append("</table>" + NEW_LINE); builder.append("<table width=\"600\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\">" + NEW_LINE); builder.append(" 号码数量:<label id=\"tels\">0</label> 个" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\">" + NEW_LINE); builder.append(" 短信内容:<label id=\"content\"></label>" + NEW_LINE); builder.append(" </td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\">群发结果:<label id=\"ret_result\"></label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append(" <tr>" + NEW_LINE); builder.append(" <td height=\"30\" colspan=\"2\" class=\"jason_sms_word\"><label id=\"ret_text\"></label></td>" + NEW_LINE); builder.append(" </tr>" + NEW_LINE); builder.append("</table>" + NEW_LINE); return builder.toString(); } /** * 设置指定名称元素的内容 * @param inits * @return */ public String getTxt(String elemName, String elemText) { return "<script>setTxt(\"" + clearLine(elemName) + "\", \"" + elemText + "\")</script>"; } /** * 设置初始化总数 * @param inits * @return */ public String getInits(int inits) { return "<script>setInits(" + inits + ")</script>"; } /** * 设置号码总数 * @param mails * @return */ public String getTels(int tels) { return "<script>setTels(" + tels + ")</script>"; } /** * 设置清理总数 * @param lates * @return */ public String getLates(int lates) { return "<script>setLates(" + lates + ")</script>"; } /** * 进度条1 * @param txt 显示文本 * @param pos 进度 * @return */ public String getBar1(String txt, int pos) { return "<script>b1(\"" + clearLine(txt) + "\", " + pos + ")</script>"; } /** * 进度条2 * @param txt 显示文本 * @param pos 进度 * @return */ public String getBar2(String txt, int pos) { return "<script>b2(\"" + clearLine(txt) + "\", " + pos + ")</script>"; } /** * 进度条3,成功 * @param pos 进度 * @return */ public String getBar3(int pos) { return "<script>b31(" + pos + ")</script>"; } /** * 进度条3,失败 * @param txt 显示文本 * @return */ public String getBar3(String txt) { return "<script>b32(\"" + clearLine(txt) + "\")</script>"; } /** * 进度条4 * @param txt 显示文本 * @param pos 进度 * @return */ public String getBar4(String txt, int pos) { return "<script>b4(\"" + clearLine(txt) + "\", " + pos + ")</script>"; } /** * 群发成功 * @return */ public String getSucc(long times) { return "<script>succ(" + times + ")</script>"; } /** * 群发失败 * @param txt 失败原因 * @return */ public String getErr(String txt) { return "<script>error(\"" + clearLine(txt) + "\")</script>"; } /** * 第一次Flush时的内容至少要有256字节 * @return 返回至少256个字符 */ public String check256byte(String src) { while(src.length() < 256){ src += " "; } return src; } /** * 去掉换行符 * @param srcStr 原内容 * @return 去掉换行符后的内容 */ private String clearLine(String srcStr){ if(srcStr.contains("\n")){ srcStr = srcStr.replaceAll("\n", " "); } if(srcStr.contains("\"")){ return srcStr.replaceAll("\"", "'"); } return srcStr; } }
调用示例:
package progress; public class MailSendProgress { private PrintWriter write; private ProgressBarCommon proBar; public MailSendProgress(PrintWriter write) { this.write = write; proBar = new ProgressBarCommon(); writeScript(proBar.getBaseHtml()); writeScript(proBar.getBar1("正在保存发送日志", 1)); for(int i=0; i<ListTel.size(); i++){ if(stoped()){ printScript(proBar.getErr("用户请求中止发送!")); return; } sendSMS(……); } } /** * 即时输出内容 * @param script 要输出的脚本内容 */ private void writeScript(String script){ write.println(script); write.flush(); } /** * 检查运行状态 * @return true申请中止 false可继续运行 */ private boolean stoped(){ return null == session.getAttribute("SMS_RUNNING"); } }
Servlet页面:
package progress; public class MailSendServlet extends HttpServlet implements Servlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("UTF-8"); resp.setHeader("content-type","text/html;charset=UTF-8"); //输出基础内容 MailSendProgress mailSendProgress = new MailSendProgress(resp.getWriter()); resp.flushBuffer(); //获取参数 String txt_sender = req.getParameter("txt_sender"); String txt_content = req.getParameter("txt_content"); //转码 txt_sender = (null==txt_sender) ? "" : new String(txt_sender.getBytes("ISO-8859-1"), "UTF-8"); txt_content = (null==txt_content) ? "" : new String(txt_content.getBytes("ISO-8859-1"), "UTF-8"); } }
发送中止Servlet:
package com.dotmin.web.java.progress; public class SmsStopServlet extends HttpServlet implements Servlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader("cache-control", "no-cache"); resp.setHeader("pragma", "no-cache"); resp.setHeader("expires", "0"); req.getSession().setAttribute("SMS_RUNNING", null); } }
相关推荐
Java实现进度条 Java实现进度条 Java实现进度条 Java实现进度条 Java实现进度条
java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现
java实时读取日志demo java 实现进度条实现demo
Java的命令行进度条 JCmdLineProgess
前台和后台交互的进度条,已经在项目中进行使用,实时获取进度。需要的可以进行下载。
java实现进度条.pdf
java带进度条的异步上传,采用servlet、ajax 可以用来学习交流使用
基于Comet属性同步的Java Web实时进度条研究
一个用JAVA开发的页面进度条,能够让用户获取页面加载信息
用java实现进度条,浅显易懂,一看就明白!
Java的命令行进度条 JCmdLineProgess.7z
用java平台利用java的多线程特点,编写进度条的现实以及当前时间的实时更新。
java实现监视任务的进度条,本人已试验成功,分享给有需要的朋友们啦!
java进度条设计源代码 有多个进度条代码
一个带界面的java小程序,可实现对所选任何类型的文件进行拷贝,并对此复制过程有进度条显示。代码风格良好,适合初学者借鉴。
java多线程进度条
java实现大文件上传并有进度条及其代码解析
这个是关于java中Frame中JProgressBar进度条的使用,一个弹窗小案例,希望大家喜欢