public abstract class ContentBufferingFilter extends Object implements javax.servlet.Filter
Filter implementation that writes the main content
of a response to a temporary buffer where it can then be post-processed
before being served.
Subclasses should:
Selector to the constructor: Which provides rules for
selecting which requests this filter should be applied to.
For a basic implementation, use BasicSelector.postProcess(String, CharBuffer, HttpServletRequest, HttpServletResponse, ResponseMetaData):
Perform the actual post processing of the content that was buffered.This primitive example creates a Filter that will intercept responses with a MIME type of text/plain, and replace all occurrences of the word 'sheep' with 'cheese'. Yes, it's pointless, but should illustrate usage.
public class SheepToCheeseFilter extends ContentBufferingFilter {
public SheepToCheeseFilter() {
super(new BasicSelector("text/plain"));
}
public boolean postProcess(String contentType, CharBuffer buffer,
HttpServletRequest request, HttpServletResponse response) {
String text = buffer.toString();
if (!text.contains("sheep")) {
// If no modification is required, returning false will signal
// ContentBufferingFilter to write the original buffer back out.
return false;
}
text = text.replaceAll("sheep", "cheese");
response.getWriter().print(text);
return true;
}
}
| Modifier | Constructor and Description |
|---|---|
protected |
ContentBufferingFilter(Selector selector) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
bufferAndPostProcess(javax.servlet.FilterChain filterChain,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Selector selector)
Apply next filter/servlet to the buffer, post process the response and
send to the real response.
|
void |
destroy() |
void |
doFilter(javax.servlet.ServletRequest servletRequest,
javax.servlet.ServletResponse servletResponse,
javax.servlet.FilterChain filterChain) |
protected ContainerTweaks |
getContainerTweaks() |
protected javax.servlet.FilterConfig |
getFilterConfig() |
protected Selector |
getSelector() |
void |
init(javax.servlet.FilterConfig filterConfig) |
protected ContainerTweaks |
initContainerTweaks() |
protected abstract boolean |
postProcess(String contentType,
CharBuffer buffer,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
ResponseMetaData responseMetaData) |
protected javax.servlet.http.HttpServletRequest |
wrapRequest(javax.servlet.http.HttpServletRequest request)
Override to wrap the HttpServletRequest sent to the end point to be buffered.
|
protected void |
writeOriginal(javax.servlet.http.HttpServletResponse response,
CharBuffer buffer,
HttpServletResponseBuffer responseBuffer)
Write out the original unmodified buffer.
|
protected ContentBufferingFilter(Selector selector)
protected abstract boolean postProcess(String contentType, CharBuffer buffer, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ResponseMetaData responseMetaData) throws IOException, javax.servlet.ServletException
IOExceptionjavax.servlet.ServletExceptionpublic void init(javax.servlet.FilterConfig filterConfig)
throws javax.servlet.ServletException
init in interface javax.servlet.Filterjavax.servlet.ServletExceptionpublic void destroy()
destroy in interface javax.servlet.Filterprotected ContainerTweaks initContainerTweaks()
protected javax.servlet.FilterConfig getFilterConfig()
protected ContainerTweaks getContainerTweaks()
public void doFilter(javax.servlet.ServletRequest servletRequest,
javax.servlet.ServletResponse servletResponse,
javax.servlet.FilterChain filterChain)
throws IOException,
javax.servlet.ServletException
doFilter in interface javax.servlet.FilterIOExceptionjavax.servlet.ServletExceptionprotected void bufferAndPostProcess(javax.servlet.FilterChain filterChain,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Selector selector)
throws IOException,
javax.servlet.ServletException
IOExceptionjavax.servlet.ServletExceptionprotected void writeOriginal(javax.servlet.http.HttpServletResponse response,
CharBuffer buffer,
HttpServletResponseBuffer responseBuffer)
throws IOException
IOExceptionprotected javax.servlet.http.HttpServletRequest wrapRequest(javax.servlet.http.HttpServletRequest request)
protected Selector getSelector()
Copyright © 2015. All Rights Reserved.