Filtermapping i Web.xml

Vad är JSP-filter?

  • Filter i web.xml används för att filtrera funktionaliteten av Java webbapplikation.
  • De fångar upp förfrågningarna från klienten innan de försöker komma åt resursen
  • De manipulerar svaren från servern och skickas till klienten.

Typer av filter i JSP

  • Autentiseringsfilter
  • Datakomprimeringsfilter
  • Krypteringsfilter
  • MIME-kedjefilter
  • Loggningsfilter
  • Tokeniserande filter

Filter definieras i web.xml, och de är en karta till servlet eller JSP. När JSP-behållaren startar med webbapplikationen, skapar den instansen av varje filter i web.xml som har deklarerats i distributionsbeskrivningen.

JSP-filtermetoder

Följande är filtermetoderna:

Public void doFilter(ServletRequest, ServletResponse, FilterChain)

Detta kallas varje gång en begäran/svar skickas från varje klient när det begärs från en resurs.

Public void init(FilterConfig)

Detta för att indikera att filtret i JSP tas i bruk

Public void förstör()

Detta för att indikera att filtret har tagits ur drift.

Exempelvis

I det här exemplet har vi skapat filter och mappat in Java web.xml-filter

Gurufilter.java

package demotest;

import java.io.IOException;
import java.util.Date;

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import Javax.servlet.http.HttpServletRequest;


public class GuruFilter implements Filter {
	
	public void doFilter(ServletRequest request, ServletResponse response, Filterchain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub 
		HttpServletRequest req = (HttpServletRequest) request;
		
		
		String ipAddress = req.getRemoteAddr(); 
		System.out.println("IP Address "+ipAddress + ", Time is" 
							+ new Date().toString());
		
		// pass the request along the filter chain 
		chain.doFilter(request, response);
	}
	
	/**
	* @see Filter#init(FilterConfig)
	*/ 
	public void init(FilterConfig fConfig) throws ServletException {
	String guruparam = fConfig.getInitParameter("guru-param");
	
	//Print the init parameter 
	System.out.println("Test Param: " + guruparam);
	}
}

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>
	test</display-name>
	<filter>
		<description>
		</description>
		<display-name>
		GuruFilter</display-name>
		<filter-name>GuruFilter</filter-name>
		<filter-class>demotest.GuruFilter</filter-class>
		<init-param>
		<param-name>guru-param</param-name>
		<param-value>This is guru paramter</param-value>
	</init-param>
	</filter>
	<filter-mapping>
	   <filter-name>GuruFilter</filter-name>
	   <url-pattern>/GuruFilter</url-pattern>
	</filter-mapping>

Förklaring av koden

Gurufilter.java

Kodrad 17-32: Här använder vi metoden "doFilter" där vi hämtar förfrågningsobjekt (i vårt exempel är förfrågningsobjektet req(HttpServletRequest-objekt)) och hämtar fjärradressen till klienten och skriver ut på konsolen och skriver även ut datum och tid på trösta.

Kodrad 33-37: Här använder vi init-metoden där vi tar init-parametern och skriver ut init-parametern i konsolen.

Web.xml

Kodrad 10-11: Filtermappning i web.xml för GuruFilter med klassnamnet GuruFilter.java där vi har filternamn som GuruFilter och filterklass som är katalogsökvägen till klassen GuruFilter

Kodrad 13-15: Mappa init-parametern med namnet guru-param och få värdet av den som placeras under filtertaggen så denna init-param har definierats för gurufilter

Produktion:

När du kör ovanstående kod får du följande utdata:

JSP-filtermetoder

  • Utdata är Test Param från init-parametern
  • Och hämtar IP-adress, datum och tid för det.