import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.zip.*; // сервлет является наследником HttpServlet public class ZipServlet extends HttpServlet { // функция обработки метода GET public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // устанавливаем, что страничка является HTML документом response.setContentType("text/html"); // берём параметр "Accept-Encoding" из HTTP заголовка String encodings = request.getHeader("Accept-Encoding"); // берём параметр "encoding" - ранее заданная кодировка документа String encodeFlag = request.getParameter("encoding"); // Куда будем выводить PrintWriter out; // если поле "Accept-Encoding" в запросе присутствует if(encodings != null) { // и если это поле содержит значение "gzip", а кодировка ещё не была установлена, if((encodings.indexOf("gzip") != -1)&&!encodeFlag.equals("none")) { // то то, куда будем выводит, будет за одним и сжимать текст с помощью GZIP out = new PrintWriter(new GZIPOutputStream(response.getOutputStream()), false); // и устанавливаем флаг для браузера, что документ будет сжат response.setHeader("Content-Encoding", "gzip"); } else // в противном случае выводить будем без сжатия out = response.getWriter(); } else // в противном случае выводить будем без сжатия out = response.getWriter(); out.println("This a test!!!"); // пишем тело документа out.close(); // и закрываем вывод. //Всё, по завершению работы этой ф-ии, документ будет отправлен } }