Import java.io.BufferedReader; importação java.io.IOException; importação do java.io.InputStreamReader; importação java.io.PrintWriter; importação do java.net.ServerSocket; importação do java.net.Socket; / ** * * @description: // servidor HTTP TODO simples, na verdade, aceitar o pedido HTTP e analisar o pedido, * @author: sunfch * * @date: 2019/01/03 16:35 * @ Param: * @return: * / público classe do httpserver { público estáticos vazios principais (String [] args) { try { / * ouvindo número da porta, contanto que ele pode receber a 8888 * / o ServerSocket SS = new newO ServerSocket (8888 ); o tempo ( a verdadeira ) { / * Exemplos do cliente, uma rotina fixa, aceite pelo servidor de destino, o cliente gera o correspondente instância * / o engaste = ss.accept (); / * Obter entrada do cliente o fluxo de informações de base, um pedido é superior a: cabeçalho do pedido, quebras de linha, o corpo do pedido de * / o BufferedReader BD = novo novo o BufferedReader ( novo novo a InputStreamReader (Socket.getInputStream ())); / ** * aceitar pedidos de HTTP, e analisar os dados * / Cadeia RequestHeader; int contentLength = 0 ; o tempo ((RequestHeader = bd.readLine ()) =!nula &&! requestHeader.isEmpty ()) { System.out.println (RequestHeader); / ** * GET parâmetro obtido * / SE (requestHeader.startsWith ( "GET" )) { int a começar = requestHeader.indexOf ( "/" ); int End = requestHeader.indexOf ( "HTTP /" ); Cordas para a condição Condition = requestHeader.substring (a começar, End); System.out.println ( "The Get parâmetro é:" + para a condição Condition); } / ** * obtido POST 1. O conteúdo do parâmetro pedido de aquisição * comprimento * / SE(requestHeader.startsWith ( "conteúdo de comprimento" )) { int começar = requestHeader.indexOf ( "Content-Lengh:") + "conteúdo de Comprimento:" .length (); Corda postParamterLength = requestHeader.substring (começam + 1 ) .trim (); contentLength = Integer.parseInt (postParamterLength); System.out.println ( "POST参数长度是:" + Integer.parseInt (postParamterLength)); } } StringBuf sb = novo StringBuf (); se (contentLength> 0) { Para ( int i = 0; i <contentLength; i ++ ) { sb.append (( carvão ) bd.read ()); } System.out.printlnl ( "POST参数是:" + sb.ToString ()); } / * 发送回执* / PrintWriter pw = novo PrintWriter (socket.getOutputStream ()); pw.println ( "HTTP / 1.1 200 OK" ); pw.println ( "Content-Type: text / html" ); pw.println (); pw.println ("<HTML>" ); pw.println ( "<TITLE> Índice </ TITLE>" ); pw.println ( "<BODY>" ); pw.println ( "<P> Bem-vindo ao servidor web de J. David." ); pw.println ( "<H1> CGI demo1" ); pw.println ( "<form action = \" color.cgi \ "METHOD = \ "POST \">" ); pw.println ( "Enter uma cor: <input type = \" text \ "name = \ "color \">" ); pw.println ( "<P>" ); pw.println ( "<input type = \" submeter \ ">" ); pw.println ( "</ form>" ); pw.println ( "</ BODY>" ); pw.println ( "</ HTML>" ); pw.flush (); socket.close (); } } Prendedor (IOException e) { e.printStackTrace (); } } }