Introduction:
Sometime we need to intercept HTTP request and perform some logic on it also can decide whether to forward that request or can redirect to any other resource.
So, for this purpose Spring has something called as filter.
You need to add filter configuration in web.xml-
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.spring.MyFilter</filter-class>
</filter><filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-mapping shows to which URL pattern you want to apply filter.
Now Actual Filter Code is written as:
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {String token = new String();
token=request.getParameter(“token”);String expected_token = new String(“12345″);
if(token != null && !token.isEmpty())
{
if (token.equals(expected_token)) {
chain.doFilter(request, response);
} else {
request.getRequestDispatcher(“/WEB-INF/pages/error.jsp”).forward(request, response);
}
}
else
{
request.getRequestDispatcher(“/WEB-INF/pages/error.jsp”).forward(request, response);
}}
@Override
public void destroy() {
}@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
I have written sample filter which checks for URL parameter named token, retrieves value of it and check whether it matches with expected value
if yes then request is forwarded using dofilter(..) method else it is redirected to JSP page showing error.
Basically what I did is, I have implemented interface filter and have overridden its methods init(), destroy() and dofilter().
You can write your own business logic inside these methods.