问题描述
使用netty构造服务端,使用浏览器在地址栏输入访问地址时,除了会发送目标url之外,浏览器还会额外发送一个url–>/favicon.ico,以前是在一个业务处理的hanlder中使用if判断uri,如果uri是这个的话,就不去执行业务逻辑,但是这样的话会造成业务代码与判断逻辑的耦合。所以使用一个新的handler去处理,利用netty的执行连完成后序的业务。
handler的构造执行顺序如下
HttpRequestDecoder(netty自带)–>FilterurlHandler–>HttpNettyRequestDecoder(二次解码器,自定义)–>serviceHandler(业务handler)–>HttpNettyResponseEncoder(二次编码器,自定义)–>HttpResponseEncoder(netty自带)
其中filterurlhandler,serviceHandler继承SimpleChannelInboundHandler
但是当浏览器访问的时候,比如url【/queryapi?index=1】,浏览器可以收到netty服务端返回