valve的invoke方法:
void invoke(Request request,
Response response)
throws java.io.IOException,
javax.servlet.ServletException
阀门通过该方法来处理请求,可以有如下顺序执行:
检查或者修改特定的Request和Response的属性
检查Request的属性,并产生相应的Response,并返回其控制权给调用者。
检查Request和Response的属性,将其包装到相应对象中,并传递他们。
如果没有产生抑制的Response对象,调用管道中的下一个阀门,getNext().invoke()
检查但是不修改Response的属性。
阀门不能做如下事情:
Change request properties that have already been used to direct the flow of processing control for this request (for instance, trying to change the virtual host to which a Request should be sent from a pipeline attached to a Host or Context in the standard implementation).
Create a completed Response AND pass this Request and Response on to the next Valve in the pipeline.
Consume bytes from the input stream associated with the Request, unless it is completely generating the response, or wrapping the request before passing it on.
Modify the HTTP headers included with the Response after the getNext().invoke()
method has returned.
Perform any actions on the output stream associated with the specified Response after the getNext().invoke()
method has returned