13.servlet过滤.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13.servlet过滤

Servlet过滤器和监听器 教学内容 过滤器的概念 过滤器链 创建过滤器 过滤器API 实现过滤器 部署过滤器 Servlet监听器 监听ServletContext对象事件 1、过滤器的概念 过滤器是Servlet 2.3技术规范引入了一种新的Web应用程序组件。过滤器位于客户和Web应用程序之间,用于检查和修改两者之间流过的请求和响应。 过滤器作为一种Web应用程序组件,可以传输或者修改用户请求与servlet响应。它可以在用户请求到达servlet之前对请求进行处理,也可以在响应离开servlet之后修改响应信息。 在过滤器截获响应对象的时候,如果输出流被servlet关闭了,那么过滤器就不能够再改变输出流中的响应信息。因此如果需要修改响应信息,在servlet的实现代码中,应当是使用刷新输出流,而不能够关闭输出流。如: PrintWriter out=response.getPrintWriter(); … out.flush(); // 如果希望有过滤器截获并处理响应信息,此处不能用out.close()代替out.flush()。 我们可以实现多个过滤器,这些过滤器就形成了一个“过滤器链”,过滤器链的实现与维护工作是由servlet容器负责实现的。 过滤器链中不同过滤器的先后顺序是在部署文件web.xml中设定的。最先截取客户请求的过滤器将最后才能截取servlet响应信息。 3、创建过滤器LogFilter 过滤器是一个简单的Java类,主要特征是实现了Filter接口: package filters; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public final class ResponseTimeFilter implements Filter { : } 4、过滤器API Filter接口:所有过滤器都必须实现javax.servlet.Filter接口。该接口定义了三个方法,这三个方法分别在过滤器生命周期的不同阶段被调用: FilterConfig接口 当容器对Filter对象进行初始化时,容器调用Filter的init方法,并传入一个实现FilterConfig接口的对象。Filter可使用该对象获得一些有用的信息。FilterConfig接口包含以下方法: FilterChain接口 对于一个Servlet,用户可以定义多个Filter。这些Filter由容器组织成一个过滤器链。在每个Filter对象中,可以使用容器传入doFilter方法的FilterChain参数引用该过滤器链。FilterChain接口定义了一个doFilter方法,用于将请求/响应继续沿链向后传送。 5、实现过滤器ResponseTimeFilter ResponseTimeFilter的init方法的实现 //保存容器传递给过滤器的FilterConfig对象 FilterConfig filterConfig=null; //过滤器生成时由容器调用 public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig =filterConfig; //保存容器传来的FilterConfig对象的引用 } ResponseTimeFilter的Destroy方法的实现 //过滤器被销毁前由容器调用该方法,释放过滤器占用的资源 public void destroy() { filterConfig =null; //过滤器销毁之前释放filterConfig对象,进行垃圾回收 } LogFilter的DoFilter方法的实现 //当有请求来临时,请求通过本方法进入过滤器 public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { long startTime=System.currentTimeMillis(); //访问时间戳 String remoteAddress=request.getRemoteAddr();//从请求获取远程地址 String remoteHost=request.getRemoteHost

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档