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服务器中,并启动程序
浙公网安备 33010602011771号