Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

1.Modify the web.xml to turn off the three test filter filters and turn on the L

ID: 3779964 • Letter: 1

Question

1.Modify the web.xml to turn off the three test filter filters and turn on the LogResponsesCookiesFilter filter.

2.Note how the filter works with the cookies.

3.Modify the LogResponsesCookiesFilter. The filter you implemented needs to add an additional cookie using the filter’s name as the cookie name. The content of this cookie will be your name.

TestFilter1, 2 and 3

package filters;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class TestFilter1 implements Filter

{   

    private FilterConfig filterConfig = null;

    public void init(FilterConfig filterConfig)

    {

        this.filterConfig = filterConfig;

    }

   

    public void doFilter(

            ServletRequest request,

            ServletResponse response,

            FilterChain chain) throws IOException,

                                      ServletException

    {

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        HttpServletResponse httpResponse =

            (HttpServletResponse) response;

        ServletContext sc =

            filterConfig.getServletContext();

        String filterName = filterConfig.getFilterName();

        String servletPath = "Servlet path: " +

            httpRequest.getServletPath();

        sc.log(filterName + " | " + servletPath +

            " | before request");

       

        chain.doFilter(httpRequest, httpResponse);

        sc.log(filterName + " | " + servletPath +

            " | after request");

    }

    public void destroy()

    {

        filterConfig = null;

    }

}

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <filter>

        <filter-name>TestFilter1</filter-name>

        <filter-class>filters.TestFilter1</filter-class>

    </filter>

    <filter>

        <filter-name>TestFilter2</filter-name>

        <filter-class>filters.TestFilter2</filter-class>

    </filter>

    <filter>

        <filter-name>TestFilter3</filter-name>

        <filter-class>filters.TestFilter3</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>TestFilter1</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>TestFilter2</filter-name>

        <url-pattern>/*</url-pattern>

        <dispatcher>REQUEST</dispatcher>

        <dispatcher>FORWARD</dispatcher>

    </filter-mapping>

    <filter-mapping>

        <filter-name>TestFilter3</filter-name>

        <servlet-name>CheckUserServlet</servlet-name>

    </filter-mapping>

    <servlet>

        <servlet-name>CheckUserServlet</servlet-name>

        <servlet-class>download.CheckUserServlet

        </servlet-class>

    </servlet>

    <!-- The rest of the servlet elements go here -->

    <servlet-mapping>

        <servlet-name>CheckUserServlet</servlet-name>

        <url-pattern>/checkUser</url-pattern>

    </servlet-mapping>

   

    <!-- The rest of the web.xml file goes here -->

</web-app>

Request side processing

package filters;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class LogRequestFilter implements Filter

{   

    private FilterConfig filterConfig = null;

   

    public void init(FilterConfig filterConfig)

    {       

        this.filterConfig = filterConfig;

    }

    public void doFilter(

            ServletRequest request,

            ServletResponse response,

            FilterChain chain) throws IOException,

                                      ServletException

    {

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        ServletContext sc =

            filterConfig.getServletContext();

      

        String logString =

            filterConfig.getFilterName() + " | ";

        logString += "Servlet path: "

            + httpRequest.getServletPath() + " | ";

        Cookie[] cookies = httpRequest.getCookies();

        String emailAddress =

            util.CookieUtil.getCookieValue(

                cookies, "emailCookie");

        logString += "Email cookie: ";

        if (emailAddress.length() != 0)

            logString += emailAddress;

        else

            logString += "Not found";

      sc.log(logString);

       

        chain.doFilter(httpRequest, response);

    }

    

    public void destroy()

    {

        filterConfig = null;

    }

}

Response side filter

package filters;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class LogResponseFilter implements Filter

{   

    private FilterConfig filterConfig = null;

   

    public void init(FilterConfig filterConfig)

    {       

        this.filterConfig = filterConfig;

    }

   

    public void doFilter(ServletRequest request,

                         ServletResponse response,

                         FilterChain chain)

                         throws IOException,

                                ServletException

    {               

        chain.doFilter(request, response);

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        HttpServletResponse httpResponse =

            (HttpServletResponse) response;

        ServletContext sc =

            filterConfig.getServletContext();

        String logString = filterConfig.getFilterName()

            + " | ";

        logString += "Servlet path: " +

            httpRequest.getServletPath() + " | ";

        logString += "Content type: " +

           httpResponse.getContentType();

        sc.log(logString);

    }

    public void destroy()

    {

         filterConfig = null;

    }

}

Custom response

package filters;

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class LogResponseCookiesFilter implements Filter

{

    private FilterConfig filterConfig = null;

    public void init(FilterConfig filterConfig)

    {

        this.filterConfig = filterConfig;

    }

    public void doFilter(

            ServletRequest request,

            ServletResponse response,

            FilterChain chain) throws IOException,

                                      ServletException

    {

        HttpServletResponse httpResponse =

            (HttpServletResponse) response;

        ResponseCookiesWrapper wrappedResponse =

            new ResponseCookiesWrapper(httpResponse);

        chain.doFilter(request, wrappedResponse);

       

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        ServletContext sc =

             filterConfig.getServletContext();

        String filterName = filterConfig.getFilterName();

        String servletPath = "Servlet path: " +

            httpRequest.getServletPath();

        ArrayList<Cookie> cookies =

            wrappedResponse.getCookies();

        String cookiesString = "";

        for (Cookie c : cookies)

            cookiesString += c.getName() + "=" +

                c.getValue() + " ";

        sc.log(filterName + " | " + servletPath +

            " | cookies: " + cookiesString);

    }

    public void destroy()

    {

        filterConfig = null;

    }

    class ResponseCookiesWrapper

        extends HttpServletResponseWrapper

    {

        private ArrayList<Cookie> cookies = null;

        public ResponseCookiesWrapper(

            HttpServletResponse response)

        {

            super(response);

            cookies = new ArrayList<Cookie>();

        }

        // provide a new method

        // for the ResponseWrapper class

        public ArrayList<Cookie> getCookies()

        {

            return cookies;

        }

        // override the addCookie method of the

        // HttpServletResponse object

        public void addCookie(Cookie cookie)

        {

            // store the cookie in the response wrapper

            // object

            cookies.add(cookie);

           

            // store the cookie in the original response

            // object

            HttpServletResponse httpResponse =

                (HttpServletResponse) this.getResponse();

            httpResponse.addCookie(cookie);

        }

    }

TestFilter1, 2 and 3

package filters;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class TestFilter1 implements Filter

{   

    private FilterConfig filterConfig = null;

    public void init(FilterConfig filterConfig)

    {

        this.filterConfig = filterConfig;

    }

   

    public void doFilter(

            ServletRequest request,

            ServletResponse response,

            FilterChain chain) throws IOException,

                                      ServletException

    {

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        HttpServletResponse httpResponse =

            (HttpServletResponse) response;

        ServletContext sc =

            filterConfig.getServletContext();

        String filterName = filterConfig.getFilterName();

        String servletPath = "Servlet path: " +

            httpRequest.getServletPath();

        sc.log(filterName + " | " + servletPath +

            " | before request");

       

        chain.doFilter(httpRequest, httpResponse);

        sc.log(filterName + " | " + servletPath +

            " | after request");

    }

    public void destroy()

    {

        filterConfig = null;

    }

}

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <filter>

        <filter-name>TestFilter1</filter-name>

        <filter-class>filters.TestFilter1</filter-class>

    </filter>

    <filter>

        <filter-name>TestFilter2</filter-name>

        <filter-class>filters.TestFilter2</filter-class>

    </filter>

    <filter>

        <filter-name>TestFilter3</filter-name>

        <filter-class>filters.TestFilter3</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>TestFilter1</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>TestFilter2</filter-name>

        <url-pattern>/*</url-pattern>

        <dispatcher>REQUEST</dispatcher>

        <dispatcher>FORWARD</dispatcher>

    </filter-mapping>

    <filter-mapping>

        <filter-name>TestFilter3</filter-name>

        <servlet-name>CheckUserServlet</servlet-name>

    </filter-mapping>

    <servlet>

        <servlet-name>CheckUserServlet</servlet-name>

        <servlet-class>download.CheckUserServlet

        </servlet-class>

    </servlet>

    <!-- The rest of the servlet elements go here -->

    <servlet-mapping>

        <servlet-name>CheckUserServlet</servlet-name>

        <url-pattern>/checkUser</url-pattern>

    </servlet-mapping>

   

    <!-- The rest of the web.xml file goes here -->

</web-app>

Request side processing

package filters;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class LogRequestFilter implements Filter

{   

    private FilterConfig filterConfig = null;

   

    public void init(FilterConfig filterConfig)

    {       

        this.filterConfig = filterConfig;

    }

    public void doFilter(

            ServletRequest request,

            ServletResponse response,

            FilterChain chain) throws IOException,

                                      ServletException

    {

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        ServletContext sc =

            filterConfig.getServletContext();

      

        String logString =

            filterConfig.getFilterName() + " | ";

        logString += "Servlet path: "

            + httpRequest.getServletPath() + " | ";

        Cookie[] cookies = httpRequest.getCookies();

        String emailAddress =

            util.CookieUtil.getCookieValue(

                cookies, "emailCookie");

        logString += "Email cookie: ";

        if (emailAddress.length() != 0)

            logString += emailAddress;

        else

            logString += "Not found";

      sc.log(logString);

       

        chain.doFilter(httpRequest, response);

    }

    

    public void destroy()

    {

        filterConfig = null;

    }

}

Response side filter

package filters;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class LogResponseFilter implements Filter

{   

    private FilterConfig filterConfig = null;

   

    public void init(FilterConfig filterConfig)

    {       

        this.filterConfig = filterConfig;

    }

   

    public void doFilter(ServletRequest request,

                         ServletResponse response,

                         FilterChain chain)

                         throws IOException,

                                ServletException

    {               

        chain.doFilter(request, response);

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        HttpServletResponse httpResponse =

            (HttpServletResponse) response;

        ServletContext sc =

            filterConfig.getServletContext();

        String logString = filterConfig.getFilterName()

            + " | ";

        logString += "Servlet path: " +

            httpRequest.getServletPath() + " | ";

        logString += "Content type: " +

           httpResponse.getContentType();

        sc.log(logString);

    }

    public void destroy()

    {

         filterConfig = null;

    }

}

Custom response

package filters;

import java.io.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class LogResponseCookiesFilter implements Filter

{

    private FilterConfig filterConfig = null;

    public void init(FilterConfig filterConfig)

    {

        this.filterConfig = filterConfig;

    }

    public void doFilter(

            ServletRequest request,

            ServletResponse response,

            FilterChain chain) throws IOException,

                                      ServletException

    {

        HttpServletResponse httpResponse =

            (HttpServletResponse) response;

        ResponseCookiesWrapper wrappedResponse =

            new ResponseCookiesWrapper(httpResponse);

        chain.doFilter(request, wrappedResponse);

       

        HttpServletRequest httpRequest =

            (HttpServletRequest) request;

        ServletContext sc =

             filterConfig.getServletContext();

        String filterName = filterConfig.getFilterName();

        String servletPath = "Servlet path: " +

            httpRequest.getServletPath();

        ArrayList<Cookie> cookies =

            wrappedResponse.getCookies();

        String cookiesString = "";

        for (Cookie c : cookies)

            cookiesString += c.getName() + "=" +

                c.getValue() + " ";

        sc.log(filterName + " | " + servletPath +

            " | cookies: " + cookiesString);

    }

    public void destroy()

    {

        filterConfig = null;

    }

    class ResponseCookiesWrapper

        extends HttpServletResponseWrapper

    {

        private ArrayList<Cookie> cookies = null;

        public ResponseCookiesWrapper(

            HttpServletResponse response)

        {

            super(response);

            cookies = new ArrayList<Cookie>();

        }

        // provide a new method

        // for the ResponseWrapper class

        public ArrayList<Cookie> getCookies()

        {

            return cookies;

        }

        // override the addCookie method of the

        // HttpServletResponse object

        public void addCookie(Cookie cookie)

        {

            // store the cookie in the response wrapper

            // object

            cookies.add(cookie);

           

            // store the cookie in the original response

            // object

            HttpServletResponse httpResponse =

                (HttpServletResponse) this.getResponse();

            httpResponse.addCookie(cookie);

        }

    }

}

}

Explanation / Answer

package filters;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public category TestFilter1 implements Filter
personal FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig)
  

public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException,
ServletException
  
}
Web.xml
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
&lt;filter&gt;
&lt;filter-name&gt;TestFilter1&lt;/filter-name&gt;
&lt;filter-class&gt;filters.TestFilter1&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter&gt;
&lt;filter-name&gt;TestFilter2&lt;/filter-name&gt;
&lt;filter-class&gt;filters.TestFilter2&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter&gt;
&lt;filter-name&gt;TestFilter3&lt;/filter-name&gt;
&lt;filter-class&gt;filters.TestFilter3&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;TestFilter1&lt;/filter-name&gt;
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;TestFilter2&lt;/filter-name&gt;
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
&lt;/filter-mapping&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;TestFilter3&lt;/filter-name&gt;
&lt;servlet-name&gt;CheckUserServlet&lt;/servlet-name&gt;
&lt;/filter-mapping&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;CheckUserServlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;download.CheckUserServlet
&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;!-- the remainder of the servlet components go here --&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;CheckUserServlet&lt;/servlet-name&gt;
&lt;url-pattern&gt;/checkUser&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

&lt;!-- the remainder of the net.xml file goes here --&gt;
&lt;/web-app&gt;
Request facet process
package filters;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public category LogRequestFilter implements Filter
personal FilterConfig filterConfig = null;

public void init(FilterConfig filterConfig)
  
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException,
ServletException
  
}
Custom response
package filters;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public category LogResponseCookiesFilter implements Filter
non-public FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig)
  
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException,
ServletException
  
}
Response facet filter
package filters;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public category LogResponseFilter implements Filter
personal FilterConfig filterConfig = null;

public void init(FilterConfig filterConfig)
  

public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException
  
category ResponseCookiesWrapper
extends HttpServletResponseWrapper
non-public ArrayList&lt;Cookie&gt; cookies = null;
public ResponseCookiesWrapper(
HttpServletResponse response)
  
// give a brand new technique
// for the ResponseWrapper category
public ArrayList&lt;Cookie&gt; getCookies()
come back cookies;
}
// override the addCookie technique of the
// HttpServletResponse object
public void addCookie(Cookie cookie)
within the response wrapper
// object
cookies.add(cookie);

// store the cookie within the original response
// object
HttpServletResponse httpResponse =
(HttpServletResponse) this.getResponse();
httpResponse.addCookie(cookie);
}
}
}
}