В данной статье мы рассмотрим автоматическое обновление данных при работе с сервлетами.
Часто мы сталкиваемся с необходимостью отображать данные, которые должны обновляться автоматически (курсы валют и т.д.). Т.е. данные должны обновляться без обновления страницы пользователем.
Для этих целей, в сервлетах присутствует возможность обновлять данные с определённой частотой.
Мы можем использовать метод класса HttpServletResponse:
public void setIntHeader(String name, int value);
Для понимания того, как это работает на практике, рассмотрим простой пример.
В качестве основы возьмём приложение из данной статьи.
Класс AutoRefreshDemo.java
package net.proselyte.servletstutorial;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
/**
* Simple servlet that demonstrates auto refresh using method setIntHeader.
*
* @author Eugene Suleimanov
*/
public class AutoRefreshDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setIntHeader("Refresh", 1);
response.setContentType("text/html");
Date currentDateTime = new Date();
String docType = "<!DOCTYPE html>";
String title = "Auto Refresh Demo";
PrintWriter writer = response.getWriter();
writer.println(docType + "<html>" +
"<head>" +
"<title>" + title +
"</title>" +
"</head>" +
"<body>" +
"<h1>Current date and time: </h1>" +
currentDateTime.toString() +
"</body>" +
"</html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Файл web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Servlets Tutorial</display-name>
<servlet>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>net.proselyte.servletstutorial.SimpleServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AutoRefreshDemo</servlet-name>
<servlet-class>net.proselyte.servletstutorial.AutoRefreshDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleServlet</servlet-name>
<url-pattern>/SimpleServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AutoRefreshDemo</servlet-name>
<url-pattern>/AutoRefreshDemo</url-pattern>
</servlet-mapping>
</web-app>
Выполним в консоли команду:
mvn tomcat7:run
Откроем браузер и перейдём по ссылке:
http://localhost:8088/AutoRefreshDemo
В результате мы получим следующую страницу, которая будет автоматически обновляться каждую секунду:
На этом мы заканчиваем изучение автоматического обновления страницы при работе с сервлетами.
В следующей статье мы рассмотрим перенаправление.