java如何实现简单的http服务器

java如何实现简单的http服务器,第1张

  http

  超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web ConsorTIum)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

  java

  Java是一门面向对象编程语言,不仅吸收了C++++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

  Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

  JAVA实现简易HTTP服务器

  搭建一个服务器,要能接收请求,并给浏览器返回正确响应。

  项目的下载地址

  项目目标:实现一个简易的多线程服务器,可以处理来自浏览器的请求(GET/POST),并做出正确的回应。

  请求分以下四种类型:

  1. 无参数,文本文件类型

  2. 无参数,图片文件类型

  3. 有参数,GET方式请求,并完成表单验证(登陆验证)

  4. 有参数,POST方式请求,并完成表单验证(登陆验证)

  首先,应该明确这个项目的基本实现原理,从浏览器读入用户请求的信息,服务器解析并记录返回的文件名和参数列表,如果文件存在,用流读取文件,并返回到浏览器上,如果不存在,返回相应的提示信息,参数列表和服务器存储的相同的话,返回登陆成功,否则返回失败。

  第一步,既然要解析从浏览器传过来的信息,那就要明白传过来信息的所使用的协议HTTP\UDP\FTP 和 URL的组成元素,因为是简易服务器,我们就只解析HTTP协议先。

  java如何实现简单的http服务器,java如何实现简单的http服务器,第2张

  Request是指从客户端到服务器端的请求消息

  Request 消息分为3部分,第一部分叫请求行, 第二部分叫http header, 第三部分是body. header和body之间有个空行,结构如下图

  java如何实现简单的http服务器,java如何实现简单的http服务器,第3张

  Method表示请求方法,比如”POST”,”GET”,

  Path-to-resoure表示请求的资源,

  Http/version-number 表示HTTP协议的版本号,

  当使用的是”GET” 方法的时候, body是为空的,当使用”POST”,body不为空,但是没有换行,readline()方法不能读

  Response是指服务器端到客户端的响应信息

  和Request消息的结构基本一样。 同样也分为三部分,第一部分叫request line, 第二部分叫request header,第三部分是body. header和body之间也有个空行, 结构如下图

  java如何实现简单的http服务器,java如何实现简单的http服务器,第4张

  状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response. HTTP/1.1中定义了5类状态码,1XX 提示信息 - 表示请求已被成功接收,继续处理;2XX 成功 - 表示请求已被成功接收,理解,接受;3XX 重定向 - 要完成请求必须进行更进一步的处理;4XX 客户端错误 - 请求有语法错误或请求无法实现;5XX 服务器端错误 - 服务器未能实现合法的请求,当然不写也是可以得,状态码就是便于程序员去分析当前页面是正确响应还是错误的。

  第二步,在了解URL和HTTP协议之后,就可以开始构建项目了。

  目前这个项目的UML图

  java如何实现简单的http服务器,java如何实现简单的http服务器,第5张

  第三步,准备文本、图片、HTML文件,然后开始编编编

  效果图:(端口号:23333)2333…

  默认访问

  java如何实现简单的http服务器,java如何实现简单的http服务器,第6张

  aaron.txt

  java如何实现简单的http服务器,java如何实现简单的http服务器,第7张

  a.jpg

  java如何实现简单的http服务器,java如何实现简单的http服务器,第8张

  GET/POST请求

  注意地址栏的变化

  login.html(GET)

  java如何实现简单的http服务器,java如何实现简单的http服务器,第9张

  login.html(GET) (登陆失败情况)

  java如何实现简单的http服务器,java如何实现简单的http服务器,第10张

  login.html(GET) (登陆成功情况)

  java如何实现简单的http服务器,java如何实现简单的http服务器,第11张

  login.html(POST)

  java如何实现简单的http服务器,java如何实现简单的http服务器,第12张

  login.html(POST) (登陆失败情况)

  java如何实现简单的http服务器,java如何实现简单的http服务器,第13张

  login.html(POST) (登陆成功情况)

  java如何实现简单的http服务器,java如何实现简单的http服务器,第14张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2717768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存