Pemetaan Filter di Web.xml

Apa itu Filter JSP?

  • Filter di web.xml digunakan untuk memfilter fungsionalitas Java aplikasi web.
  • Mereka mencegat permintaan dari klien sebelum mereka mencoba mengakses sumber daya
  • Mereka memanipulasi tanggapan dari server dan dikirim ke klien.

Jenis Filter di JSP

  • Filter otentikasi
  • Filter kompresi data
  • Filter enkripsi
  • Filter rantai MIME
  • Filter Pencatatan
  • Filter tokenisasi

Filter didefinisikan di web.xml, dan merupakan peta ke servlet atau JSP. Ketika kontainer JSP dimulai dengan aplikasi web, ia menciptakan instance dari setiap filter di web.xml yang telah dideklarasikan dalam deskriptor penerapan.

Metode Filter JSP

Berikut ini adalah metode penyaringan:

Publik void doFilter(ServletRequest, ServletResponse, FilterChain)

Ini dipanggil setiap kali permintaan/respons diteruskan dari setiap klien ketika diminta dari sumber daya.

Init kekosongan publik (FilterConfig)

Hal ini untuk menunjukkan bahwa filter di JSP ditempatkan ke dalam layanan

Penghancuran kekosongan publik()

Ini menunjukkan bahwa filter telah dikeluarkan dari layanan.

Example

Dalam contoh ini, kami telah membuat filter dan memetakannya Java filter web.xml

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>

Penjelasan kode

Gurufilter.java

Baris Kode 17-32: Di sini kita menggunakan metode “doFilter” di mana kita mendapatkan objek permintaan (dalam contoh kita objek permintaan adalah req(objek HttpServletRequest)) dan mendapatkan alamat jarak jauh klien dan mencetak pada konsol dan juga mencetak tanggal dan waktu pada konsol.

Baris Kode 33-37: Di sini kita menggunakan metode init dimana kita mengambil parameter init dan mencetak parameter init di konsol.

Web.xml

Baris Kode 10-11: Pemetaan filter di web.xml untuk GuruFilter dengan nama kelas GuruFilter.java di mana kita memiliki nama filter sebagai GuruFilter dan kelas filter yang merupakan jalur direktori kelas GuruFilter

Baris Kode 13-15: Memetakan parameter init bernama guru-param dan mendapatkan nilainya yang ditempatkan di bawah tag filter sehingga init-param ini telah ditentukan untuk gurufilter

Keluaran:

Ketika Anda menjalankan kode di atas, Anda akan mendapatkan output berikut:

Metode Filter JSP

  • Outputnya adalah Test Param dari parameter init
  • Dan mengambil alamat IP, tanggal dan waktunya.