Jetty之处理请求。

实际上Jetty的工作方式非常简单,当Jetty接收到一个请求时,Jetty就把这个请求交给在Server中注册的而代理Handler去执行,如何执行注册的Handler同样由你规定,Jetty要做的就是调用你注册的第一个Handler的handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)方法,接下来要怎么做,完全由你决定。
要能接收一个Web请求访问,首先要创建一个ContextHandler。

当我们在浏览器中输http://localhost:8080时请求将会代理到Server类的handle方法,Server的handle方法将请求代理给ContextHandler的handle方法,ContextHandler又调用另一个Handler的handle方法。这个调用方式是和Servlet的工作方式类似,在启动之前初始化,创建对象后调用Servlet的service方法。在Servlet的API中我通常也只实现它的一个包装好的类,在Jetty中也是如此。虽然ContextHandler也只是一个handler,但是这个Handler通常由Jetty帮你实现,我们一般只要实现一些与具体要做的业务逻辑有关的Handler就好了,而一些流程性的或某些规范的Handler,我们直接用就好了。下图是请求Servlet的时序图。

Jetty处理请求的过程就是Handler链上handle方法的执行过程。这里需要解释的一点是ScopeHandler的处理规则,ServletContextHandler、SessionHandler和ServletHandler都继承了ScopeHandler,那么这三个类组成一个Handler链,他们的执行规则是ServletContextHandler.handler→ServletContextHandler.doScope→SessionHandler.doScope→ServletHandler.doScope→ServletContextHandler.doHandle→SessionHandler.doHandle→ServletHandler.doHandle,他这种机制使得我们可以在duScope阶段做一些额外工作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值