• tomcat源码阅读_代码篇12


    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
  • 相关阅读:
    雷林鹏分享:Lua if 嵌套语句
    雷林鹏分享:Lua if...else 语句
    雷林鹏分享:Lua if 语句
    debug 使用lldb
    mysql高负载的问题排查
    一个NULL引发的血案
    画椭圆型
    异常分析
    go 语言的库文件放在哪里?如何通过nginx代理后还能正确获取远程地址
    defer 要放在return之前
  • 原文地址:https://www.cnblogs.com/macula7/p/1960469.html
  • Copyright © 2020-2023  润新知