Картографиране на филтри в Web.xml

Какво е JSP филтри?

  • Филтрите в web.xml се използват за филтриране на функционалността на Java уеб приложение.
  • Те прихващат заявките от клиента, преди да се опитат да получат достъп до ресурса
  • Те манипулират отговорите от сървъра и изпратените до клиента.

Видове филтри в JSP

  • Филтри за удостоверяване
  • Филтри за компресиране на данни
  • Филтри за криптиране
  • MIME верижни филтри
  • Филтри за регистриране
  • Токенизиращи филтри

Филтрите са дефинирани в web.xml и те са карта към сървлет или JSP. Когато JSP контейнерът стартира с уеб приложението, той създава екземпляра на всеки филтър в web.xml, който е деклариран в дескриптора за разполагане.

Методи за филтриране на JSP

Следват методите за филтриране:

Public void doFilter(ServletRequest, ServletResponse, FilterChain)

Това се извиква всеки път, когато се предава заявка/отговор от всеки клиент, когато се изисква от ресурс.

Публично невалидно инициализиране (FilterConfig)

Това означава, че филтърът в JSP е пуснат в експлоатация

Публично празно унищожаване ()

Това означава, че филтърът е изваден от експлоатация.

Пример

В този пример създадохме филтър и го картографирахме Java филтър 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>

Обяснение на кода

Gurufilter.java

Кодов ред 17-32: Тук използваме метода „doFilter“, където получаваме обект на заявка (в нашия пример обектът на заявка е req(HttpServletRequest object)) и получаваме отдалечения адрес на клиента и отпечатваме на конзолата, а също така отпечатваме дата и час на конзола.

Кодов ред 33-37: Тук използваме init метод, където вземаме init параметъра и отпечатваме init параметъра в конзолата.

Web.xml

Кодов ред 10-11: Картографиране на филтри в web.xml за GuruFilter с името на класа GuruFilter.java, където имаме име на филтър като GuruFilter и филтърен клас, който е път на директория на клас GuruFilter

Кодов ред 13-15: Картографиране на началния параметър с име guru-param и получаване на стойността му, която е поставена под етикета на филтъра, така че този init-параметър е дефиниран за gurufilter

Изход:

Когато изпълните горния код, получавате следния изход:

Методи за филтриране на JSP

  • Резултатът е Test Param от init параметъра
  • И извличане на IP адрес, дата и час от него.