Java手写静态页面服务器

简介: 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服务器中,并启动程序

目录
相关文章
|
1月前
|
Java 关系型数据库 MySQL
Flink1.18.1和CDC2.4.1 本地没问题 提交任务到服务器 报错java.lang.NoClassDefFoundError: Could not initialize class io.debezium.connector.mysql.MySqlConnectorConfig
【2月更文挑战第33天】Flink1.18.1和CDC2.4.1 本地没问题 提交任务到服务器 报错java.lang.NoClassDefFoundError: Could not initialize class io.debezium.connector.mysql.MySqlConnectorConfig
52 2
|
2月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
2月前
|
移动开发 编解码 网络协议
用Java的BIO和NIO、Netty来实现HTTP服务器(三) 用Netty实现
用Java的BIO和NIO、Netty来实现HTTP服务器(三) 用Netty实现
|
2月前
|
网络协议 Java Linux
用Java来实现BIO和NIO模型的HTTP服务器(二) NIO的实现
用Java来实现BIO和NIO模型的HTTP服务器(二) NIO的实现
|
2月前
|
编解码 网络协议 Java
用Java的BIO和NIO、Netty实现HTTP服务器(一) BIO与绪论
用Java的BIO和NIO、Netty实现HTTP服务器(一) BIO与绪论
|
2月前
|
Java Linux 网络安全
vscode 远程服务器 java 无法跳转
【2月更文挑战第4天】
|
3月前
|
Java Shell 网络安全
java实现连接远程服务器,并可以执行shell命令
java实现连接远程服务器,并可以执行shell命令
56 2
|
3月前
|
网络协议 Java Linux
【cpolar】搭建我的世界Java版服务器,公网远程联机
【cpolar】搭建我的世界Java版服务器,公网远程联机
452 1
|
1月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
420 4

热门文章

最新文章