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