Http服务器

本文介绍了如何使用Java实现一个Http服务器,涉及Java基础、多线程、Http协议、Maven工具和线程池技术。服务器支持静态资源和动态程序处理,具备错误处理机制,能够作为嵌入式Web服务器使用。在学习过程中,可以加深对HTTP协议的理解,并实践Java编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Http服务器

1.技术

  • Java(基本语法、Socket接口)
  • 多线程技术
  • Http协议

2.环境

  • JDK1.8
  • IDEA管理工具
  • Maven管理工具

3.功能

  • 支持静态资源处理
  • 支持动态程序处理

4.特点

  • 采用线程池服务器可以接收多个浏览器的请求
  • 用户可以输入访问主机端口号和静态资源路径,在浏览器根据需求向服务器发送请求数据
  • 通过获取Socket输入流后解析请求数据,按照Http协议格式响应数据
  • 静态资源文件类型支持支持html、txt、js、jpg、png、map3等,请求方法支持GET和POST,错误资源会返回404或405
  • 可以作为一个库提供给需要嵌入式的Web服务器的程序使用

5.实现

5.1 抽象

  • 请求报文格式抽象为请求对象
  • 响应报文格式抽象为响应对象
  • 业务处理逻辑抽象为处理对象
  • 抽象服务器的服务对象

5.2 步骤

  • 分析HTTP协议的特点
  • 解析请求报文,封装为请求对象
  • 根据请求对象的信息,获取处理对象,处理业务逻辑
  • 根据业务处理结果,封装响应数据

6.具体过程
在这里插入图片描述
7.应用

  • 编译打包源码 mvn clean package
  • 启动程序(设置参数:端口,静态文件目录:
jar  -jar  java_httpd-1.0.0.jar   --port=8080  --path=D:\Java

7.1静态资源
在这里插入图片描述
7.2 动态资源
在这里插入图片描述
7.3 资源错误
在这里插入图片描述
8.收获

  • 学会使用Maven管理工具
  • 掌握HTTP协议的具体格式及如何解析数据响应数据
  • 将所学Java知识应用到实际,对自我知识掌握的检测

基于Java的http服务器代码实现流程图:在这里插入图片描述

总结:可以支持静态资源处理和动态程序处理。
用户输入访问主机的端口号和静态资源存放路径。程序启动时,会将所有处理方式利用反射进行注册,添加到一个Map集合中<Sting,class>,Sting是“/time”,class是处理时间的处理器类对象。利用线程池对浏览器向服务器请求的线程进行管理,创建服务端Socket,浏览器向服务器请求数据时,首先获取Socket输入流读(getInputStream)取解析请求报文(首行 :请求方法 URL 版本; 协议头:key:value),封装请求对象,利用请求对象的请求方法,版本号,协议头来封装响应对象,根据请求数据的url来判断是否是静态资源(lake.jpg),如果是静态资源,根据静态资源存放路径new一个file对象,文件输入流利用数组缓冲区读取文件内容,并且写到响应对象的字节输出流(ByteArrayOutputStream);如果不是静态资源,在之前的处理器Map集合中找请求类型是否存在,get到该处理器对象,再根据不同的请求方法进行处理。如果资源错误,会有404或405页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值