如何在Jsp页面中使用TimerTask?

时间:2014-04-30 05:04:18

标签: java jsp timertask

嗨,我正在尝试使用TimerTask访问数组列表。我想在不同的2个子列表中获取数组列表值,然后想要在5秒的时间间隔内打印jsp页面上的所有列表

这是我的代码:

ScheduledTask

import java.util.TimerTask;
import java.util.Date;
public class ScheduledTask extends TimerTask {
 public void run() {

    }
}

My.jsp

 <%@ page import="Demo.ScheduledTask"%>
<html>
<head>

    <title>JSP Page</title>
</head>
<body>
  <jsp:useBean id="test" class="Demo.ScheduledTask" />
  <%

  Timer time = new Timer(); // Instantiate Timer Object
        ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class
        time.schedule(st, 0, 1000);
                    for (int i = 0; i <3; i++) {
            URL url;
        try {
            // get URL content

            String a = "http://122.160.81.37:8080/mandic/commoditywise?c=paddy";
            url = new URL(a);
            URLConnection conn = url.openConnection();

            // open the stream and put it into BufferedReader
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String inputLine;
            ArrayList<String> list1 = new ArrayList<String>();
            ArrayList<String> list2 = new ArrayList<String>();
           List sublist1=null;
           List sublist2=null;
           List sublist3=null;
            while ((inputLine = br.readLine()) != null) {

                String s = inputLine.replace("|", "\n");

                s = s.replace("~", " ");
                //System.out.println(s);
                StringTokenizer str = new StringTokenizer(s);
                while (str.hasMoreTokens()) {
                    String mandi = str.nextElement().toString();
                    String price = str.nextElement().toString();
                    list1.add(mandi);
                    list2.add(price);

                }
            } sublist1=list1.subList(0, 15);
            sublist2=list1.subList(16,30);
             sublist3=list1.subList(31,45);
            String item1 = null;
            for (int l = 0; l < sublist1.size(); l++) 

            {
               out.println("List1"+sublist1.get(l));
            } 
            Thread.sleep(5000);
                for(int j=0;j<sublist2.size();j++)
                {
                   out.println("List2"+sublist2.get(j));

                }
                Thread.sleep(5000);
                for(int k=0;k<sublist2.size();k++){
                   out.println("List3"+sublist3.get(k));
            }
            Thread.sleep(5000);
           if (i == 2) 
            {
                out.println("Application Terminates");
                System.exit(0);
            }

            br.close();


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } 


        }
  %>

</body>
</html>

如何实现所需的输出。

提前致谢

1 个答案:

答案 0 :(得分:1)

猜猜你希望用户每5个secons看到新内容吗?您无法在JSP中执行此操作,因为JSP正在生成发送到浏览器的html页面。它没有在浏览器中执行。

你可以

  • 在JavaScript中重写您的定时操作。这将在broswer中执行。
  • 在JavaScript中设置ajax回调,定期调用以执行计时器任务中的内容,并将结果发送到浏览器以更新UI。