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
IOException
javax.servlet.ServletException
public void init(javax.servlet.FilterConfig filterConfig) throws javax.servlet.ServletException
init
in interface javax.servlet.Filter
javax.servlet.ServletException
public void destroy()
destroy
in interface javax.servlet.Filter
protected 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.Filter
IOException
javax.servlet.ServletException
protected void bufferAndPostProcess(javax.servlet.FilterChain filterChain, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Selector selector) throws IOException, javax.servlet.ServletException
IOException
javax.servlet.ServletException
protected void writeOriginal(javax.servlet.http.HttpServletResponse response, CharBuffer buffer, HttpServletResponseBuffer responseBuffer) throws IOException
IOException
protected javax.servlet.http.HttpServletRequest wrapRequest(javax.servlet.http.HttpServletRequest request)
protected Selector getSelector()
Copyright © 2015. All Rights Reserved.