に基づいてコードを変更します
1、TestHttpServerHandleクラス
パッケージcom.example.firstexample。 輸入io.netty.buffer.ByteBuf; 輸入io.netty.buffer.Unpooled; 輸入io.netty.channel.ChannelHandlerContext; 輸入io.netty.channel.SimpleChannelInboundHandler; io.netty.handler.codec.httpインポート*。 輸入io.netty.util.CharsetUtil; 輸入java.net.URI; パブリッククラスTestHttpServerHandleは延びSimpleChannelInboundHandler <HttpObject> { //读取客户端发送过来的请求、并且向客户端返回响应 channelRead0は(ChannelHandlerContext channelHandlerContext、HttpObject httpObject)ボイドスロー保護例外{ CommonUtil.println(httpObject.getClass())。 CommonUtil.println(channelHandlerContext.channel()[リモート()。)。 IF(httpObjectのinstanceofのHttpRequest){ にHttpRequestのHttpRequest =(HttpRequestの)httpObject。 CommonUtil.println( "请求方法名:" + httpRequest.method()名()+ "URI:"。+ httpRequest.uri()); URIのURI =新しいURI(httpRequest.uri()); IF( "/ favicon.icoを" .equals(uri.getPath())){ CommonUtil.println( "请求favicon.icoを")。 返します。 } (CharsetUtil.UTF_8、 "Hello World"の)内容= Unpooled.copiedBuffer ByteBuf。 FullHttpResponse応答=新しいDefaultFullHttpResponse(HttpVersion.HTTP_1_1、HttpResponseStatus.OK、コンテンツ)。 response.headers()。セット(HttpHeaderNames.CONTENT_TYPE、」 。response.headers()セット(HttpHeaderNames.CONTENT_LENGTH、content.readableBytes())。 //写回客户端 channelHandlerContext.writeAndFlush(応答); //channelHandlerContext.close()。 } } @Override 公共ボイドchannelActive(ChannelHandlerContext CTX)は例外{スロー CommonUtil.println( "アクティブチャネル")。 super.channelActive(CTX)。 } @Override 公共ボイドchannelRegistered(ChannelHandlerContext CTX)は例外{スロー ( "チャンネル登録")CommonUtil.println。 super.channelRegistered(CTX)。 } @Override 公共ボイドhandlerAdded(ChannelHandlerContext CTX)は例外{スロー CommonUtil.println( "チャネル追加さを")。 super.handlerAdded(CTX)。 } @Override 公共ボイドchannelInactive(ChannelHandlerContext CTX)は例外{スロー ( "チャネル非アクティブ")CommonUtil.println。 super.channelInactive(CTX)。 } @Override 公共ボイドchannelUnregistered(ChannelHandlerContext CTX)は例外{スロー ( "チャネル未登録")CommonUtil.println。 super.channelUnregistered(CTX)。 } }
2、パブリッククラスCommonUtilを高めます
パブリッククラスCommonUtil { パブリック静的ボイドのprintln(文字列MSG){ System.out.printlnは(String.Formatの( "[スレッド%S]%sの"、にThread.currentThread()のgetId()、MSG)。)。 } パブリック静的ボイドのprintln(オブジェクトMSG){ のprintln(msg.toString())。 } }
3、営業成績
郵便配達の呼び出しを使用します
下記に示すように、コンソールの印刷