Skip to content

Instantly share code, notes, and snippets.

@markcline
Created February 26, 2020 00:07
Show Gist options
  • Save markcline/bcf6fd4304449f072991c5a36c70ff08 to your computer and use it in GitHub Desktop.
Save markcline/bcf6fd4304449f072991c5a36c70ff08 to your computer and use it in GitHub Desktop.
package test
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import spark.embeddedserver.jetty.HttpRequestWrapper;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Created by mcline on 2/25/20.
* Purpose: Allow java spark multiple filters to access request body by using a wrapper object
*/
public class RequestWrapperFilter implements Filter {
private FilterConfig filterConfig = null;
private static final Logger logger = LoggerFactory.getLogger(RequestWrapperFilter.class);
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
logger.info("Entering Filter Class");
HttpServletRequest httpRequest = (HttpServletRequest) request; // NOSONAR
HttpServletResponse httpResponse = (HttpServletResponse) response; // NOSONAR
request = new HttpRequestWrapper(httpRequest);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfiguration) {
this.filterConfig = filterConfiguration;
}
public void destroy() {
this.filterConfig = null;
}
}
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="false"
version="3.1">
<filter>
<filter-name>wrapperFilter</filter-name>
<filter-class>test.RequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>wrapperFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>SparkFilter</filter-name>
<filter-class>spark.servlet.SparkFilter</filter-class>
<init-param>
<param-name>applicationClass</param-name>
<param-value>YourApplicationPathHere</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SparkFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment