不依赖任何第三方库或框架(只使用 jdk 里面包含的公开可用的类库),tomcat 属于第三方框架所以不要用,com.sun
下的也不要用,开发一个 http 服务
做加法运算:计算参数 a 和参数 b 的算术和,在浏览器地址栏里输入 http://localhost:port/add?a=4&b=7
,浏览器窗口中显示 11
做乘法运算:计算参数 a 和参数 b 的算术乘积,在浏览器地址栏里输入 http://localhost:port/mult?a=4&b=7
,浏览器窗口中显示 28
Java 开发文档中已经提供完整的方式, 英文教程
具体流程:
使用 ServerSocket 对客户端进行监听
接收 http,解析数据
提供服务并响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class HttpService { public static Integer result = 0 ; public static void main (String[] args) { try { ServerSocket ss = new ServerSocket (8888 ); Socket socket = ss.accept(); BufferedReader bd = new BufferedReader (new InputStreamReader (socket.getInputStream())); String requestHeader; if ((requestHeader = bd.readLine()) != null && !requestHeader.isEmpty()) { System.out.println(requestHeader); int start = requestHeader.indexOf("?" ) + 3 ; int terminal = requestHeader.indexOf("&" ); String num1 = requestHeader.substring(start, terminal); int space = requestHeader.indexOf("HTTP" ) - 1 ; String num2 = requestHeader.substring(terminal + 3 , space); System.out.println(num1 + num2); if (requestHeader.contains("add" )) { result = Integer.parseInt(num1) + Integer.parseInt(num2); } else if (requestHeader.contains("mult" )) { result = Integer.parseInt(num1) * Integer.parseInt(num2); } } PrintWriter pw = new PrintWriter (socket.getOutputStream()); pw.println("HTTP/1.1 200 OK" ); pw.println("Content-type:text/html" ); pw.println(); pw.println("<h1>" + result + "</h1>" ); pw.flush(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }