如何检测它是否是过滤器类将要处理的请求/响应?另外,我需要取消对servlet的请求,并希望创建自己的响应并从dofilter方法返回它。有没有可能做到这一点?
发布于 2012-01-15 05:50:07
每个筛选器都可以不影响请求和响应,也可以同时影响其中一个或两个。这完全取决于您是否在调用chain.doFilter(...)
之前和/或之后执行任何操作-以及您是否传入了包装的请求和/或响应。
如果您需要在过滤器中创建自己的响应,只需简单地不调用chain.doFilter(...)
并从过滤器提供您自己的响应。
请参考Filter.doFilter
Javadocs,包括:
此方法的典型实现将遵循以下模式:- 1.检查请求2.可选地将请求对象与自定义实现包装在一起以过滤输入过滤的内容或标头3.可选地将响应对象与自定义实现包装在一起以过滤输出过滤的内容或标头4. a)使用FilterChain对象(chain.doFilter())调用链中的下一个实体,4. b)或不将请求/响应对传递给过滤器链中的下一个实体以阻止请求处理5.在调用过滤器链中的下一个实体后直接在响应上设置标头。
发布于 2012-01-16 04:22:13
我已经使用response.getWriter().write("response data“)修改了响应;并通过删除chain.doFilter()来避免将响应传递给servlet;
现在,我正在验证来自doFilter方法的会话变量(用于身份验证)。由于请求和响应都在同一个doFilter方法中处理,我认为这些会话验证发生了2次(1)。当请求发生时& (2.)回应的时候。但是,如何找到doFilter当前正在处理的内容(请求/response)?因此,我可以让会话验证只在请求时发生。
https://stackoverflow.com/questions/8867756
复制相似问题