Compactando dados dos Servlets

Dica enviada pelo George Gastaldi ([EMAIL PROTECTED])

Para otimizar no recebimento de uma página HTML no Browser, é possível 
compactar os dados a serem enviados em GZIP, caso o browser suporte.
O conteúdo será descompactado no lado cliente.
O servlet Java abaixo mostra como usar saída comprimida de servlets.
Você pode comprimir grandes partes de dados antes de enviar e eles serão 
descompactados pelo browser na hora diminuindo o tempo de transmissão 
dos dados entre o servidor HTTP e o browser cliente.

Qualquer browser supporta, por default, formatos diferentes de arquivos. 
Os mais conhecidos e úteis são GIF e JPG. Mas os browsers também 
suportam arquivos gzip, e nos seus servlets, você pode detectar que 
formatos são suportados analisando o cabeçalho do request.

import java.io.*;
import java.util.zip.*;
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GzipServlet extends HttpServlet {
        public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
        doPost(req,res);
}
        public void doPost (HttpServletRequest req, HttpServletResponse 
res)
throws ServletException, IOException
{
        String encoding=req.getHeader("Accept-Encoding");
        boolean canGzip=false;
        if (encoding!=null)
                if (encoding.indexOf("gzip")>=0)
                        canGzip=true;
        if (canGzip)
        {
                res.setHeader("Content-Encoding","gzip");
                OutputStream o=res.getOutputStream();
                GZIPOutputStream gz=new GZIPOutputStream(o);
                String bigStuff="";
                bigStuff+="<html>";
                bigStuff+="<br>Dados Compactados";
                bigStuff+="</html>";
                gz.write(bigStuff.getBytes());
                gz.close();
                o.close();
        }
        else // sem compactacao
        {
                res.setContentType("text/html");
                PrintWriter out=res.getWriter();
                out.println("<html>");
                out.println("<br>Sem Compactação de Dados");
                out.println("</html>");
                out.flush();
                out.close();
        }
        }
}

Bons códigos!!!

______________________________________________________________________________ 

Handerson Ferreira Gomes
Summa Technologies
Boletim Dicas Java - Sua dose diária de Java.



================================================================================
[dicas-list] circula diariamente com pequenas dicas sobre a plataforma Java e é
mais um serviço da Sociedade de Usuários Java - http://www.soujava.org.br
      *** SouJava - Fortalecendo a Comunidade Java Brasileira! ***
- Para contribuir com uma dica, envie um e-mail para [EMAIL PROTECTED]
- Participe de outras listas de discussão sobre a linguagem Java.
  Saiba mais em http://www.soujava.org.br/lista.htm
--------------------------------------------------------------------------------
- Para assinar este boletim: mailto:[EMAIL PROTECTED]
- Para cancelar sua assinatura: mailto:[EMAIL PROTECTED]
- Dicas anteriores: http://www.mail-archive.com/dicas-list%40soujava.org.br
- Para discutir sobre as dicas, acesse o Mundo OO (http://www.mundooo.com.br)


Responder a