Tomcat 的过滤诀窍
2009-11-05 00:00:00 来源:WEB开发网容器使用这些过滤器映射来确定一个特定的过滤器是否应参与某个特定的请求。清单 1 是为应用程序的所有 URL 定义的应用于 IE Filter 的一个过滤器映射:
清单 2. 过滤器映射标记<filter-mapping>
<filter-name>IE Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
创建一个简单的过滤器
现在该来定义我们的第一个过滤器了。这是一个不重要的过滤器,检查请求标题以确定是不是使用 Internet Explorer 浏览器来查看 URL 的。如果是 Internet Explorer 浏览器,过滤器就显示“拒绝访问”的信息。尽管操作并不重要,但这个示例演示了:
一个过滤器的一般剖析
一个在请求到达资源处理器前检查其标题信息的过滤器
如何编写一个过滤器来阻止基于运行时间检测到的条件(验证参数、源 IP、时间…等等)的后续处理
此过滤器的源代码作为 IEFilter.java , com.ibm.devworks.filters 包的一部分位于源代码发布区中。现在就让我们来仔细研究一下该过滤器的代码。
清单 3. 使用 Filter 接口 public final class IEFilter implements Filter {
private FilterConfig filterConfig = null;
所有的过滤器都须执行 Filter 接口。我们创建了一个局部变量以容纳由容器在初始化过滤器时传递进来的 filterConfig 。这有时发生在第一次调用 doFilter() 前。
清单 4. doFilter 方法 public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
String browserDet =
((HttpServletRequest) request).getHeader("User-Agent").toLowerCase();
if ( browserDet.indexOf("msie") != -1) {
PrintWriter out = response.getWriter();
out.println("<html><head></head><body>");
out.println("<h1>Sorry, page cannot be displayed!</h1>");
out.println("</body></html>");
out.flush();
return;
}
更多精彩
赞助商链接