Intercepting HTTP Request in Spring Framework

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.

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s