public class TrimWhiteSpaceFilter extends GenericFilter
Character.isWhitespace(char)
.
This filter has no understanding of the content in the reponse, and will
remove repeated white space anywhere in the stream. It is intended for
removing white space from HTML or XML streams, but this limitation makes it
less suited for filtering HTML/XHTML with embedded CSS or JavaScript,
in case white space should be significant here. It is strongly reccommended
you keep CSS and JavaScript in separate files (this will have the added
benefit of further reducing the ammount of data communicated between
server and client).
At the moment this filter has no concept of encoding.
This means, that if some multi-byte escape sequence contains one or more
bytes that individually is treated as a white space, these bytes
may be skipped.
As UTF-8
guarantees that no bytes are repeated in this way, this filter can safely
filter UTF-8.
Simple 8 bit character encodings, like the
ISO/IEC 8859 standard, or
are always safe.
ConfigurationTrimWhiteSpaceFilter
in your web-application, you simply need
to add it to your web descriptor (web.xml
).
If using a servlet container that supports the Servlet 2.4 spec, the new
dispatcher
element should be used, and set to
REQUEST/FORWARD
, to make sure the filter is invoked only once for
requests.
If using an older web descriptor, set the init-param
"once-per-request"
to "true"
(this will have the same effect,
but might perform slightly worse than the 2.4 version).
Please see the examples below.
Servlet 2.4 version, filter section:<!-- TrimWS Filter Configuration --> <filter> <filter-name>trimws</filter-name> <filter-class>com.twelvemonkeys.servlet.TrimWhiteSpaceFilter</filter-class> <!-- auto-flush=true is the default, may be omitted --> <init-param> <param-name>auto-flush</param-name> <param-value>true</param-value> </init-param> </filter>Filter-mapping section:
<!-- TimWS Filter Mapping --> <filter-mapping> <filter-name>trimws</filter-name> <url-pattern>*.html</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <filter-mapping> <filter-name>trimws</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
oncePerRequest
Constructor and Description |
---|
TrimWhiteSpaceFilter() |
Modifier and Type | Method and Description |
---|---|
protected void |
doFilterImpl(javax.servlet.ServletRequest pRequest,
javax.servlet.ServletResponse pResponse,
javax.servlet.FilterChain pChain)
Invoked once, or each time a request/response pair is passed through the
chain, depending on the
GenericFilter.oncePerRequest member variable. |
void |
init()
A convenience method which can be overridden so that there's no need to
call
super.init(config) . |
void |
setAutoFlush(boolean pAutoFlush) |
destroy, doFilter, getFilterConfig, getFilterName, getInitParameter, getInitParameterNames, getServletContext, init, log, log, setFilterConfig, setOncePerRequest
@InitParam public void setAutoFlush(boolean pAutoFlush)
public void init() throws javax.servlet.ServletException
GenericFilter
super.init(config)
.init
in class GenericFilter
javax.servlet.ServletException
- if an error occurs during initGenericFilter.init(FilterConfig)
protected void doFilterImpl(javax.servlet.ServletRequest pRequest, javax.servlet.ServletResponse pResponse, javax.servlet.FilterChain pChain) throws IOException, javax.servlet.ServletException
GenericFilter
GenericFilter.oncePerRequest
member variable.doFilterImpl
in class GenericFilter
pRequest
- the servlet requestpResponse
- the servlet responsepChain
- the filter chainIOException
- if an I/O error occursjavax.servlet.ServletException
- if an exception occurs during the filter processGenericFilter.oncePerRequest
,
doFilter
,
Filter.doFilter
Copyright © 2017. All rights reserved.