jsp 회전 html 정적화(二)HttpServlet ResponseWrapper를 계승하여 자신의response 포장을 실현
6682 단어 response
2. response 패키지 정의 Wappered Response 상속 Http Servlet Response Wrapper
public class WapperedResponse extends HttpServletResponseWrapper {
private ByteArrayOutputStream buffer=null;
private ServletOutputStream out=null;
private PrintWriter writer=null;
public WapperedResponse(HttpServletResponse resp) throws IOException{
super(resp);
buffer=new ByteArrayOutputStream();//
out=new WapperedOutputStream(buffer);
writer=new PrintWriter(new OutputStreamWriter(buffer,this.getCharacterEncoding()));
}
// outputstream
@Override
public ServletOutputStream getOutputStream()throws IOException{
return out;
}
// writer
@Override
public PrintWriter getWriter() throws UnsupportedEncodingException{
return writer;
}
// flushBuffer
@Override
public void flushBuffer()throws IOException{
if(out!=null){
out.flush();
}
if(writer!=null){
writer.flush();
}
}
@Override
public void reset(){
buffer.reset();
}
public byte[] getResponseData()throws IOException{
flushBuffer();// out、writer WapperedResponse buffer ,
return buffer.toByteArray();
}
// , ServletOutputStream
private class WapperedOutputStream extends ServletOutputStream{
private ByteArrayOutputStream bos=null;
public WapperedOutputStream(ByteArrayOutputStream stream) throws IOException{
bos=stream;
}
@Override
public void write(int b) throws IOException{
bos.write(b);
}
}
}
그러면 서브렛 용기가 get Output Stream () 방법을 호출하여 얻은 출력 흐름은 우리가 정의한 포장 흐름입니다. Wappered Output Stream.3、이제 필터에서 Wappered Response를 사용하여response를 포장하고 처리할 수 있습니다.
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletResponse resp=(HttpServletResponse)arg1;
WapperedResponse wapper=new WapperedResponse(resp);
arg2.doFilter(arg0, wapper);
byte[] b1=wapper.getResponseData();
//do something with b1 here
byte[] b2=...;
//
ServletOutputStream output=arg1.getOutputStream();
output.write(b2);
output.flush();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#HttpWebRequest, HttpWebResponse 아날로그 브라우저를 사용하여 웹 내용을 캡처하는 방법텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.