import java.io.*;
import javax.servlet.*;
// программа реализует интерфейс Servlet
class DoloadServlet implements Servlet
{
ServletConfig config; // объект ServletConfig
public DoloadServlet() {} // ничего не делает
// при инициализации сохраняем config
public void init(ServletConfig config) throws ServletException
{this.config = config;}
// выдаёт сохранённый config
public ServletConfig getServletConfig() {return config;}
// информация о сервлете
public String getServletInfo() {return "DoloadServlet";}
public void destroy() {} // ничего не делает
// обработка запроса
public void service(ServletRequest request, ServletResponse response)
throws ServletException, java.io.IOException
{
// разбирать запрос мы не будем, просто срязу
// создаём HTTP заголовок:
String head = "HTTP/1.0 200 OK\n"+
+ "Server: DoloadServlet\n"
+ "Content-Type: text/html; charset=windows-1251\n"
+ "Connection: Keep-Alive\n"
+ "Content-Encoding: multipart/mixed\n"
+ "Transfer-Encoding: chunked"
+ "Pragma: no-cache\n\n";
// теперь добавляем первоначальные данные
// для этого примера - 20 тэгов "
" с переносом строки
for(int i = 0; i < 20; i++) head = head + "
\n";
// берём поток вывода
ServletOutputStream os = response.getOutputStream();
// пишем туда заголовок и первоначальные данные
os.print(head);
// отправляем всё записаное в буффер к клиенту
response.flushBuffer();
// начинаем добавлять новые строки:
// эти строки будут выглядеть следующим образом: номер строки, потом "
\n"
// каждая новая строка будет появляться раз в 3 секунды
int i = 0;
while(true)
{
// инкримент счётчика
i++;
// пишем строку
os.print(""+i+"
\n");
// сброс буффера
response.flushBuffer();
// примораживаем поток на 3 секунды
try {sleep(3000);}
catch(Exception e){}
}
}
}