Servlet Filter


Published on

Creating and using Servlet Filters.

Published in: Education, Technology
  • Be the first to comment

Servlet Filter

  1. 1. SERVLET AND JSP FILTERSProf. AshishSingh Bhatia1Prof. AshishSingh Bhatia
  2. 2. What is Filter? Filter is a small program that run on the server before the servlet or JSP page withwhich it is associated. Filter can be attached to one or more servlets or JSP pages and can examine therequest information going into these resources. Filter can Invoke the resource in normal manner. Filter can Invoke the resource with modified request information. Filter can Invoke the resource but modify response before sending it to the client. Filter can Prevent resource from being invoked and instead redirect to a differentresource, return a particular status code, or generate replacement output.Prof. AshishSingh Bhatia 2
  3. 3. What it can be used for ? Authentication blocking request based on user identity. Logging and auditing – Tracking uses of a web application. Image Conversion – Scaling maps and so on. Data Compression – Making downloads smaller. Localization – Targeting a request and response in particular locale. XSL/T Transformation of XML content -Prof. AshishSingh Bhatia 3
  4. 4. One or many filtersProf. AshishSingh Bhatia 4
  5. 5. Creating a Basic Filter1. Create a class that implements the Filter Interface. [ init, doFilter , destroy ]2. Put the filtering behavior in the doFilter method.3. Call the doFilter method of the FilterChain object.4. Register the filter with the appropriate servlets and JSP page.5. Disable the invoker servlet. **Prof. AshishSingh Bhatia 5
  6. 6. Create a class that implements the Filter Interface Must implement javax.servlet.Filter public void init(FilterConfig config) throws ServletException public void doFilter(ServletRequest request, ServletResponse response, FilterChainchain) throws ServletException, IOException Executed each time servlet is invoked. FilterChain is used to invoke next filter that is associated with the servlet or jsp page, if no morefilters it will invoke servlet or jsp page itself. public void destroy()Prof. AshishSingh Bhatia 6
  7. 7. Register the Filter Use filter and filter-mapping tags to register filter in servlet.<filter><filter-name> … </filter-name><filter-class> … </filter-class></filter><filter-mapping><filter-name> … </filter-name><url-pattern> … </url-pattern></filter-mapping>Prof. AshishSingh Bhatia 7
  8. 8. Understanding filter and mapping tags In filter element we can have icon, filter-name, display-name, filter-class, init-param. In filter-mapping element filter-name, url-pattern, servlet-name, dispatcher. dispatcher : Optional used to specifies what type of request this filter-mappingshould apply to. Possible values are REQUEST, FORWARD, INCLUDE and ERRORProf. AshishSingh Bhatia 8
  9. 9. Example : Reporting FilterProf. AshishSingh Bhatia 9
  10. 10. Code for ServletProf. AshishSingh Bhatia 10
  11. 11. web.xmlProf. AshishSingh Bhatia 11
  12. 12. Valid tooProf. AshishSingh Bhatia 12
  13. 13. Better Approach Lets log in to the file [ Recall logs directory ] For accessing log we need context object. context.log(String) to log in to file.Prof. AshishSingh Bhatia 13
  14. 14. Prof. AshishSingh Bhatia 14
  15. 15. Log FileProf. AshishSingh Bhatia 15
  16. 16. Initialization Parameter in Filter Developers, End Users, Deployers<filter><filter-name>SomeFilter</filter-name><filter-class>somePackage.SomeFilterClass</filter-class><init-param><param-name>param1</param-name><param-value>value1</param-value></init-param></filter>Prof. AshishSingh Bhatia 16String val1 = config.getInitParameter("param1");
  17. 17. Example : An Access Time Filter To log if access is at unusual time Say if its accessed between 2 to 10 log should bemade. To do this two init parameter start time 2 and end time as 10 In Filter we will read the init parameter as starttime and endtime We will get the accessed time as GregorianCalendar calendar = new GregorianCalendar(); int currentTime = calendar.get(Calendar.HOUR_OF_DAY); If current time is greater than starttime and less than endtime log will be done.Prof. AshishSingh Bhatia 17
  18. 18. Blocking the Response What we do in a filterpublic void doFilter(ServletRequest request,ServletResponse response, FilterChainchain) throws ServletException, IOException{HttpServletRequest req = (HttpServletRequest)request;context.log(req.getRemoteHost() + " tried to access " +req.getRequestURL() +" on " + new Date() + ".");chain.doFilter(request,response);}Prof. AshishSingh Bhatia 18This will call next filter or servlet or jsp
  19. 19. Blocking the Responsepublic void doFilter(ServletRequest request,ServletResponse response, FilterChainchain) throws ServletException, IOException{HttpServletRequest req = (HttpServletRequest)request;context.log(req.getRemoteHost() + " tried to access " +req.getRequestURL() +" on " + new Date() + ".");if(condition==true)response.sendRedirect(“some other page / site”);elsechain.doFilter(request,response);}Prof. AshishSingh Bhatia 19
  20. 20. Modifying the responseProf. AshishSingh Bhatia 20FilterdoChain(request,response)Servlet / JSPGenerate ResponseAnd closes the stream !We will create our own space / bufferand give it to servlet and canmanipulate the same once Servlet /JSP is done with response
  21. 21. Creating our Wrapper ClassProf. AshishSingh Bhatia 21
  22. 22. In Filter ClassProf. AshishSingh Bhatia 22
  23. 23. In Web.xmlProf. AshishSingh Bhatia 23Target will be replace will be replace by
  24. 24. Modification MethodProf. AshishSingh Bhatia 24
  25. 25. END OF SESSION25Prof. AshishSingh Bhatia