自定义web服务模拟Tomcat

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();
        }
        
        
    }
    
    

}

 

posted @ 2018-12-18 00:04  马鞍山  阅读(260)  评论(0编辑  收藏  举报