1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.acme;
17
18 import java.io.IOException;
19
20 import javax.servlet.Filter;
21 import javax.servlet.FilterChain;
22 import javax.servlet.FilterConfig;
23 import javax.servlet.ServletContext;
24 import javax.servlet.ServletException;
25 import javax.servlet.ServletRequest;
26 import javax.servlet.ServletRequestWrapper;
27 import javax.servlet.ServletResponse;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletRequestWrapper;
30
31
32
33
34
35
36 public class TestFilter implements Filter
37 {
38 private ServletContext _context;
39
40
41
42
43
44 public void init(FilterConfig filterConfig) throws ServletException
45 {
46 _context= filterConfig.getServletContext();
47 }
48
49
50
51
52
53 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
54 throws IOException, ServletException
55 {
56 Integer old_value=null;
57 ServletRequest r = request;
58 while (r instanceof ServletRequestWrapper)
59 r=((ServletRequestWrapper)r).getRequest();
60
61 try
62 {
63 old_value=(Integer)request.getAttribute("testFilter");
64
65 Integer value=(old_value==null)?new Integer(1):new Integer(old_value.intValue()+1);
66
67 request.setAttribute("testFilter", value);
68
69 String qString = ((HttpServletRequest)request).getQueryString();
70 if (qString != null && qString.indexOf("wrap")>0)
71 {
72 request=new HttpServletRequestWrapper((HttpServletRequest)request);
73 }
74 _context.setAttribute("request"+r.hashCode(),value);
75
76 chain.doFilter(request, response);
77 }
78 finally
79 {
80 request.setAttribute("testFilter", old_value);
81 _context.setAttribute("request"+r.hashCode(),old_value);
82 }
83 }
84
85
86
87
88
89 public void destroy()
90 {
91 }
92
93 }