A simple Web Application demonstrating the usage of Filters in Java EE. Here it is showing how to create a Filter that adds url and time of request to a database in JSP and Servlets.
Inserted Queries result in database on browsing few links :
Video tutorial to demonstrate @WebFilter annotation.
Using annotation
package com.hubberspot.filter; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; //Any request accessed by pattern /* will be intercepted by this //filter whose name is DatabaseEntryFilter. No web.xml is needed //if we are using annotations @WebFilter(urlPatterns={"/*"} , filterName="DatabaseEntryFilter" ) public class DatabaseEntryFilter implements Filter { // This filter implements Filter so it has to provide implementations // for Filter interface Connection connection = null; ResultSet resultSet = null; Statement statement = null; static String query = null; String url = null; String username = null; String password = null; private FilterConfig filterConfig = null; public FilterConfig getFilterConfig() { return filterConfig; } public void setFilterConfig(FilterConfig fConfig) { this.filterConfig = fConfig; } // 3rd implementation of Filter interface public void destroy() { this.filterConfig = null; } // 2nd implementation of Filter interface public void doFilter( ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain ) throws IOException, ServletException { // extracting the ServletContext from filterConfig ServletContext context = filterConfig.getServletContext(); // Taking incoming time of request double incomingTime = System.currentTimeMillis(); // Pre processing of filter before doFilter() method chain.doFilter(servletRequest, servletResponse); // here request goes to server // Post processing of filter before doFilter() method // Taking outgoing time of response double outgoingTime = System.currentTimeMillis(); String diffInTime = "" ; String url = ""; String client = ""; String date = ""; // Downcasting to HttpServletRequest HttpServletRequest request = (HttpServletRequest)servletRequest; // Extracting the URL of request url = request.getRequestURI(); // Extracting the remote address of request client = request.getRemoteAddr(); // Extracting the time difference diffInTime= (outgoingTime - incomingTime)/1000.0 + "secs"; // creating a new Date object date = new Date().toString(); // making the following insert query each time a //new request is made to the server query = "insert into status () values " + "('"+ client + "','" + url + "','" + date + "','" + diffInTime + "');"; executeQuery(query); } private void executeQuery(String query) { try { statement = connection.createStatement(); statement.execute(query); } catch (SQLException e) { e.printStackTrace(); } } // 3rd implementation of Filter interface public void init(FilterConfig fConfig) throws ServletException { this.filterConfig = fConfig; url = "jdbc:mysql://localhost:3306/javaee"; username = "root"; password = "root"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(url, username , password); } catch (Exception e) { e.printStackTrace(); } } }
Inserted Queries result in database on browsing few links :
Video tutorial to demonstrate @WebFilter annotation.
Using annotation