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