快速业务通道

Servlet过滤器介绍之实用过滤器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
okenizer tok = new StringTokenizer(bannedSites); while (tok.hasMoreTokens()) { String bannedSite = tok.nextToken(); bannedSiteTable.add(bannedSite); System.out.println("Banned " + bannedSite); } } public void destroy() {} private String getReferringHost(String refererringURLString) { try { URL referringURL = new URL(refererringURLString); return (referringURL.getHost()); } catch (MalformedURLException mue) { // Malformed or null return (null); } } // Replacement response that is returned to users // who are from or referred here by a banned site. private void showWarning(ServletResponse response, String bannedSite) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n"; out.println(docType + "<HTML>\n" + "<HEAD><TITLE>Access Prohibited</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"WHITE\">\n" + "<H1>Access Prohibited</H1>\n" + "Sorry, access from or via " + bannedSite + "\n" + "is not allowed.\n" + "</BODY></HTML>"); } }

Servlet过滤器介绍之实用过滤器(2)

时间:2011-04-09 51cto zhangjunhd

web.xml

<filter>    <filter-name>BannedAccessFilter</filter-name>    <filter-class>com.zj.sample.BannedAccessFilter</filter-class>    <init-param>     <param-name>bannedSites</param-name>     <param-value>       www.competingsite.com www.bettersite.com       www.moreservlets.com 127.0.0.1//我们测试这个     </param-value>    </init-param> </filter> <filter-mapping>    <filter-name>BannedAccessFilter</filter-name>    <url-pattern>/*</url-pattern> </filter-mapping>

测试:

http://localhost:8080/Test4Jsp/

结果:

Servlet过滤器介绍之实用过滤器 - 编程入门网

7.替换过滤器

7.1修改响应

过滤器能够阻止对资源的访问或者阻止激活它们。但如果过滤器想更改资源所生成的响应 。怎么办呢?似乎没有办法能够对一个资源所生成的响应进行访问。DoFilter的第二个参数 (ServletResponse)给过滤器提供了一种发送新输出到客户机的办法,但没有给过滤器提供 对servlet或JSP页面输出进行访问的办法。为什么会这样呢?因为在第一次调用doFilter方 法时,servlet或JSP页面甚至还没有执行。一旦调用了FilterChain对象中的doFilter方法, 要修改响应似乎就太迟了,这是数据已经发送到客户机。

不过,办法是有的,那就是修改传递给FilterChain对象的doFilter方法的响应对象。一 般,建立缓存servlet或JSP页面生成的所有输出的版本。Servlet API 2.3版为此提供了一种 有用的资源,即,HttpServletResponseWrapper类。这个类的使用包括以下五个步骤:

1)建立一个响应包装器

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号