Java手写静态页面服务器

由于即将学习javaweb,为了可以提前热身,手动仿照Tomcat服务器来手写一个最简单最迷你版的web服务器,来搭建静态网页.废话不多说先上简单代码实现功能.本次主要也是复习一下多线程,io,网络编程,集合等知识点.

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
    public static void main(String[] args)throws Exception {
        ServerSocket serverSocket = new ServerSocket(8080);

        while(true){

                Socket socket = serverSocket.accept();


                /*1.获取浏览器要访问的资源的名字*/
                BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String firstLine = br.readLine();//GET /admin/login.html HTTP/1.1

                String uri = firstLine.split(" ")[1].substring(1);//  admin/login.html


                /*2.读取资源,将资源写给浏览器*/
                InputStream is = MyServer.class.getClassLoader().getResourceAsStream(uri);
                PrintStream out = new PrintStream(socket.getOutputStream());
                out.println("HTTP/1.1 200 OK");
                out.println("Content-Type:text/html;charset=utf-8");
                out.println();

                byte[] data = new byte[1024];
                int len;
                while((len=is.read(data)) != -1){
                    out.write(data,0,len);
                }

                out.close();
                socket.close();


        }

    }
}

服务器优化方向:
1.如果服务器发生异常,应不应该直接奔溃?如果访问的资源不存在,应该返回404页面
2.使用线程优化服务器
3.每次访问服务器,都需要重新读取硬盘中的数据?怎么才能把已经访问过的数据缓存到服务器中提高下次访问的速度。
4.我们现在只能读取resources目录的资源,能不能添加配置文件读取指定目录下的资源?
5.使用日志记录服务器启动的时间,以及每次访问了哪些文件。
6.把我们的程序打包成一个jar包,然后上传到linux服务器中,并启动程序

posted @ 2020-10-24 18:57  赵广陆  阅读(38)  评论(0)    收藏  举报