Tomcat gzip 압축 설정

3030 단어 tomcat
데이터 양 이 많 거나 그림 이 많 기 때문에 압축 을 사용 해 야 할 때 가 있 습 니 다. Tomcat 의 gzip 압축 을 어떻게 여 는 지 기록 합 니 다.
1. server. xml 파일 설정
protocol = "HTTP / 1.1" 속성 값 을 포함 하 는 connector 를 찾 아 다음 설정 을 추가 합 니 다.
compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata" compressableMimeType="application/json,text/html,text/xml,text/javascript,text/css,text/plain"
그 중:
compressable MimeType 은 압축 된 mimetype 을 사용 하고, noCompressionUserAgent 는 gzip 압축 을 사용 하지 않 는 브 라 우 저 를 표시 합 니 다.
 
2. 응용 프로그램 에서 출력 데이터
response.setContentType("application/json;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.print(......);
writer.flush();
writer.close();

 여 기 는 주로 Content - Type 이 머리 를 설정 하려 고 합 니 다. 이전에 설정 한 copressable Mime Type 목록 에 있어 야 합 니 다.
 
3. gzip 압축 된 데이터 가 져 오기
http 요청 을 HttpClient 방식 으로 모 의 합 니 다. gzip 압축 된 데 이 터 를 가 져 오 려 면 accept - encoding 요청 헤더 의 값 에 gzip 형식 을 추가 해 야 합 니 다.
public static void main(String[] args) throws Exception {
		HttpMethod method = new GetMethod("http://localhost/web/user");
		method.setRequestHeader(new Header("accept-encoding","gzip,deflate,sdch"));
		HttpClient client = new HttpClient();
		client.executeMethod(method);
		String response = method.getResponseBodyAsString();
		System.out.println("---------------------------------------------------------");
		System.out.println(response);
		System.out.println("---------------------------------------------------------");
		String res = getUngzipString(method);
		System.out.println("---------------------------------------------------------");
		System.out.println(res);
		System.out.println("---------------------------------------------------------");
		System.out.println();
	}
	
	public static String getUngzipString(HttpMethod method) throws Exception{
		InputStream is = method.getResponseBodyAsStream();  
        GZIPInputStream gzin = new GZIPInputStream(is);  
        InputStreamReader isr = new InputStreamReader(gzin, "UTF-8");   
        java.io.BufferedReader br = new java.io.BufferedReader(isr);  
        StringBuffer sb = new StringBuffer();  
        String tempbf;  
        while ((tempbf = br.readLine()) != null) {  
            sb.append(tempbf);  
        }  
        isr.close();  
        gzin.close();  
        System.out.println(method.getResponseHeader("Content-Type")+"-->"+method.getResponseHeader("Content-Type").getValue());
        return sb.toString(); 
	}

 예 를 들 어 상단 코드 는 gzip 를 읽 는 두 가지 방법 을 테스트 하 는 것 입 니 다. 첫 번 째 인쇄 System. out. println (response) 출력 내용 은 어 지 러 운 코드 이 고 두 번 째 인쇄 System. out. println (res) 출력 은 gzip 압축 해제 후의 내용 입 니 다.

좋은 웹페이지 즐겨찾기