servlet与jsp过滤器

2019-01-16  本文已影响11人  vlsee
  1. 过滤器在init()中获取servlet上下文并保存以调用日志方法。
  2. 过滤器在init()中获取初始化参数并保存以按照部署者的意图调整行为。
  3. 过滤器阻止访问,通过response.writer来自定义返回内容,或通过redirect重定向到其他页面。
  4. 以上都是在servlet处理请求之前的过滤行为,也可在经过servlet或jsp之后对response_进行处理,即doFilter之后进行的操作。
    但是一旦调用FilterChain.doFilter()响应便已经发送给客户端了。解决方案便是修改传递给FilterChain的response为自定义的缓冲流responseWrapper,在FilterChain处理完之后,过滤器再对该wrapper处理,最后调用真response的getWriter.writer()经响应结果返回给客户端。
  5. 有些服务器要求设置响应头须在doFilter之前,这是为了防止已将响应发出之后再设置信息头的操作。
  6. servlet2.3只允许为直接来自客户端的请求配置过滤器,2.4版本引入了dispatcher部署描述符,可将过滤器应用于forward、include的请求。
  7. RequestDispatcher属于MVC框架,故框架中在servlet中对JSP页面的转发都属于forward行为。
上一篇 下一篇

猜你喜欢

热点阅读