Bonjour,

J'ai essayé de créer un filtre lié à une servlet afin d'essayer de comprendre comment cela fonctionne. J'arrive à utililser mon filtre mais par contre je n'arrive pas à récupérer la valeur d'un paramètre déclaré dans le fichier web.xml de mon contexte.

L'exemple est tout bête, il doit simplement permettre de modifier la réponse générer par la servlet en lui ajoutant la chaîne de caractère définit comme paramètre dans le fichier web.xml.

Voici mon fichier web.xml :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
 
	<display-name>Exemple3-Servlet</display-name> 
 
	<filter>
		<filter-name>monFiltre</filter-name>
		<description>Compte le nombre d'acces a la Servlet</description>
		<filter-class>FiltreTest</filter-class>
		<init-param>
			<param-name>monParam</param-name>
			<param-value>salut</param-value>
		</init-param>
	</filter>
 
	<filter-mapping>
		<filter-name>monFiltre</filter-name>
		<servlet-name>exemple3</servlet-name>
	</filter-mapping>
 
	<servlet> 
		<servlet-name>exemple3</servlet-name> 
		<servlet-class>NomPrenomAge</servlet-class> 
	</servlet> 
	<servlet-mapping> 
		<servlet-name>exemple3</servlet-name> 
		<url-pattern>/exemple3</url-pattern> 
	</servlet-mapping> 
 
</web-app>

et voici la classe "filtre" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
 
public class FiltreTest implements Filter {
 
	private FilterConfig filterConfig;
 
	public void init(FilterConfig filterConfig) throws ServletException {
 
		this.filterConfig = filterConfig;
	}
 
	public void destroy() {
 
		this.filterConfig = null;
	}
 
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
 
		if (this.filterConfig == null)
			return;
 
		StringWriter sw = new StringWriter();
		PrintWriter writer;
		writer = response.getWriter();
 
		String c = (String)filterConfig.getServletContext().getAttribute("monParam");
		writer.println("<html>--------------------------------------");
		writer.println("Chaîne supplémentaire : " + c );
		writer.println("--------------------------------------");
		writer.flush();
		System.out.println(sw.getBuffer().toString());
		chain.doFilter(request,response);
	}
 
}
Ma servlet s'affiche correctement si ce n'est un "null" à la place de la valeur de mon paramètre.

Il y a apparemment un petit passage que je n'ai pas compris, auriez-vous une explication ?

Merci d'avance !