Created
January 2, 2017 09:53
-
-
Save nom3ad/1676345f27da7b2e3c0ef5d7a6a1c00f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.io.PushbackInputStream; | |
import java.util.zip.GZIPInputStream; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.*; | |
import org.mortbay.jetty.Server; | |
import org.mortbay.jetty.servlet.ServletHolder; | |
public class Gziptest { | |
public static void main(String[] args) throws Exception { | |
Server server = new Server(8080); | |
org.mortbay.jetty.servlet.Context context = new org.mortbay.jetty.servlet.Context(org.mortbay.jetty.servlet.Context.SESSIONS); | |
context.setContextPath("/"); | |
server.setHandler(context); | |
context.addServlet(new ServletHolder(new GzipHandlerServlet()),"/*"); | |
server.start(); | |
server.join(); | |
} | |
@SuppressWarnings("serial") | |
private static class GzipHandlerServlet extends HttpServlet | |
{ | |
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException | |
{ | |
PushbackInputStream pb = new PushbackInputStream( request.getInputStream(), 2 ); | |
if(isGZIPed(pb)){ | |
GZIPInputStream gzis = new GZIPInputStream(pb); | |
InputStreamReader isReader = new InputStreamReader( gzis ); | |
BufferedReader br = new BufferedReader(isReader); | |
response.setContentType("text/html"); | |
response.setStatus(HttpServletResponse.SC_OK); | |
response.getWriter().println("<h1>"+"hey,i got a gzip with follwong head\n\n\n\n"+"</h1>"); | |
response.getWriter().write(br.readLine()); | |
} | |
else{ | |
response.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); | |
response.getWriter().println("you have failed me!!!"); | |
} | |
response.getWriter().println("session=" + request.getSession(true).getId()); | |
} | |
private boolean isGZIPed( PushbackInputStream pb) | |
{ | |
boolean isGziped = false; | |
try | |
{ | |
byte[] signature = new byte[2]; | |
pb.read( signature ); | |
pb.unread( signature ); | |
int head = ( (int)signature[0] & 0xff ) | ( ( signature[1] << 8 ) & 0xff00 ); | |
isGziped = GZIPInputStream.GZIP_MAGIC == head; | |
} | |
catch( Exception ioe ) | |
{ | |
log("",ioe); | |
} | |
return isGziped; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment