package day01.service.web; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; /** * 增强版,可以解析出浏览器所请求的URL,对不同URL做不同的响应 * 接收HTTP协议形式的请求 */ public class MyWebServer2 { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8080); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while(true) { Socket sc = ss.accept(); InputStream in = sc.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); // 读取http请求头中的第一行 // GET / HTTP/1.1 String requestFirstLine = br.readLine(); String url = requestFirstLine.split(" ")[1]; String content = null; String format = sdf.format(new Date()); if("/hour".equals(url)) { content = format.substring(11); }else if("/date".equals(url)) { content = format.substring(0, 10); }else if("/whole".equals(url)) { content = format; }else { } String page = "<html>" + "<head>" + "<title>this is doit webserver</title>" + "</head>" + "<body>" + "<h1>"+content+"</h1>" + "</body>" + "</html>"; String responseCode = "HTTP/1.1 200 OK\nServer: Doit-WebServer/1.1"; String contentLength = "Content-Length: "+page.length()+"\n\n"; // 这样返回的一个页面字符串,浏览器认为不符合http协议,解析失败 OutputStream out = sc.getOutputStream(); out.write((responseCode+contentLength+page).getBytes()); in.close(); out.close(); sc.close(); } } } package day01.service.web; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; /** * 增强版,可以解析出浏览器所请求的URL,对不同URL做不同的响应 * 接收HTTP协议形式的请求 */ public class MyWebServer3 { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8080); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); while(true) { Socket sc = ss.accept(); InputStream in = sc.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); // 读取http请求头中的第一行 // GET / HTTP/1.1 String requestFirstLine = br.readLine(); String url = requestFirstLine.split(" ")[1]; String content = null; String format = sdf.format(new Date()); if("/hour".equals(url)) { content = format.substring(11); }else if("/date".equals(url)) { content = format.substring(0, 10); }else if("/whole".equals(url)) { content = format; }else { } String page = "<html>" + "<head>" + "<title>this is doit webserver</title>" + "</head>" + "<body>" + "<h1>"+content+"</h1>" + "</body>" + "</html>"; String responseCode = "HTTP/1.1 200 OK\nServer: Doit-WebServer/1.1"; String contentLength = "Content-Length: "+page.length()+"\n\n"; // 这样返回的一个页面字符串,浏览器认为不符合http协议,解析失败 OutputStream out = sc.getOutputStream(); out.write((responseCode+contentLength+page).getBytes()); in.close(); out.close(); sc.close(); } } }