java 搭建 web服务器 socket实现

【写在前面】
云计算的第n个java作业,开始一直不懂为什么老师一直让我们写java web的小demo,不应该是hadoop啥的直接上框架嘛。后来慢慢了解到,其实java web 的一些内容确实是云计算的基础。这个demo是用java socket 来搭建一个web服务器,以前确实没有接触过,所以这里记录一下。

基本原理

(1)设置WebServer端口号
(2)使用 ServerSocket.accept()方法,轮询监听用户请求;
(3)用户使用浏览器输入地址,向WebServer发出请求;
(4)服务器监听到用户请求,为该请求新建一个HttpServer来处理该请求;
(5)HttpServer解析用户请求并作出响应;
(6)用户浏览器显示响应结果。

一、编写WebServer.java

WebServer.java 是整个项目的主线程,用于设置服务器端口号,监听用户的请求,为每一个监听到的请求新建一个HttpServer线程,来处理用户请求。
public void startServer(int port) 轮询serverSocket.accept(),监听用户请求。为每一个监听到的请求,新建一个httpserver线程响应 public static void main(String[] args) ,设置服务器端口号,之后,启动Webserver服务器。

package com.jxnu.socket;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;/*** @author xiao*/
public class WebServer extends Thread{public void startServer(int port){try {ServerSocket serverSocket = new ServerSocket(port);while(true){Socket socket = serverSocket.accept();HttpServer httpServer = new HttpServer(socket);httpServer.start();}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new WebServer().startServer(8000);}
}

二、编写HttpServer.java
HttpServer.java 继承Thread,用于读取用户访问路径,根据路径响应请求。
public HttpServer(Socket socket) 初始化socket对象,获取对应 输入,输出流 public void run() 重载Run()函数,调用Read()、response()函数 private void response(String filePath) 根据读取的路径,进行响应。以流的形式读取文件,再以流的形式输出文件 private String read() 解析请求路径。
其中,为了项目的可移植性,文件的解析路径是相对路径,整个文件都放在文件夹resource下。项目目录如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
index.html
这里注意加上

<link rel="shortcut icon" href="#" type="image/x-icon">

在这里插入图片描述

效果图
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【趋势】未来十年计算机体系结构的历史和趋势

来源&#xff1a;机器之心先分享我对这篇文章的总结&#xff0c;或者我得到的启发&#xff1a;1、DSA&#xff08;Domain-Specific Architectures&#xff0c;特定领域的体系结构&#xff09;将成为未来十年甚至更长时间&#xff0c;计算机体系结构的趋势。登纳德缩放定律结束、…

java socket 实现增删改查 + 在线答题小案例

实现效果 &#xff08;1&#xff09; 在client端可以实现对数据库的操作&#xff08;Select&#xff0c;Insert&#xff0c;Update&#xff0c;Delete&#xff09; &#xff08;2&#xff09;数据库中创建一个考试表和学生表&#xff0c;考试表中问题是四项选择题&#xff08;…

90后斯坦福博士论文登Science封面!AI算法准确预测RNA三维结构

来源&#xff1a;Science编辑&#xff1a;yaxin、su「我们对大部分RNA的结构几乎一无所知。」半个世纪以来&#xff0c;确定生物分子的三维结构一直困惑着科学家&#xff0c;也是生物学的重大挑战之一。难就难在&#xff0c;RNA折叠成复杂三维结构的形状很难通过实验或计算来确…

Event Recommendation Engine Challenge分步解析第五步

一、请知晓 本文是基于&#xff1a; Event Recommendation Engine Challenge分步解析第一步 Event Recommendation Engine Challenge分步解析第二步 Event Recommendation Engine Challenge分步解析第三步 Event Recommendation Engine Challenge分步解析第四步 需要读者先阅读…

计算机网络之RIP协议与OSPF协议模拟、UDP与TCP编程,Wireshark抓包分析

通过Python模拟RIP协议,OSPF协议,并模拟UDP和TCP编程,并通过Wireshark抓包工具,对所发送的报文进行捕获分析。 文章目录 一、RIP协议的模拟与编程二、OSPF协议的模拟与编程三、UDP编程四、TCP套接字编程五、Wireshark 数据分析六、总结一、RIP协议的模拟与编程 1.1 题目 …

虚拟机 NAT模式与桥接模式的区别

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; NAT模式&#xff1a;相当于宿主机再构建一个局域网&#xff0c;虚拟机无法和本局域网中的其他真实主机进行通讯。只需要宿主机器能访问互联网&#xff0c;那么虚拟机就能上网&#xff0c;不需要再…

基础研究和前沿技术领域校企融合协同创新的国际经验及启示

来源&#xff1a;中国科学技术发展战略研究院作者&#xff1a;薛姝、何光喜、张文霞原载于《全球科技经济瞭望》2021年5月第5期摘要&#xff1a;促进大学与企业的合作是各个国家科技创新政策和创新体系建设的重点任务&#xff0c;近年来也出现了加强在基础研究和前沿技术领域加…

理解云计算三种服务模式——IaaS、PaaS和SaaS

云计算的服务模式仍在不断进化&#xff0c;但业界普遍接受将云计算按照服务的提供方式划分为三个大类&#xff1a;SaaS&#xff08;Software as a Service–软件即服务&#xff09; PaaS&#xff08;Platform as a Service–平台即服务&#xff09; IaaS&#xff08;Infrastruc…

术,路,心:陈天桥的大脑行旅

来源&#xff1a; 脑极体在互联网、云计算与电动汽车之后&#xff0c;连同资本、产业、学术界在内的社会各界&#xff0c;纷纷开始将目光投向更远的地方。下一个超级机会藏在何处&#xff1f;下一个改变人类文明的技术机遇何时触发&#xff1f;随着各国开始在国家战略层面布局下…

8万行的insert数据,Ctrl+c、Ctrl+v后心态崩了(如何在Linux下对MySQL数据库执行sql文件)...

从最下面可以看到&#xff0c;差不多有86389行&#xff0c;Ctrlc、Ctrlv后 PHPstorm一直没有反应。。。。 肿么办&#xff1f;&#xff1f;复制粘贴不行的话&#xff0c;可以用什么方法把数据插入到数据库中&#xff0c;数据库用的是MySQL。 皇天不负有心人&#xff0c;卧薪尝胆…

链路状态路由协议与OSPF

链路状态路由算法&#xff08;LS算法&#xff09; 工作原理 每个路由器将自己的链路状态信息洪泛到网络上的所有路由器。tips:&#xff08;每个路由器都洪泛会给网络带来负担&#xff09;每个路由器最终会知道整个网络的拓扑结构&#xff08;LSDB&#xff09;。每个路由器使用…

感知算法、规划地图……波士顿动力揭秘Atlas机器人跑酷背后的技术

来源&#xff1a;机器之心&#xff0c;编辑&#xff1a;nhyilin仅用于学术分享&#xff0c;版权属于原作者几天前&#xff0c;波士顿动力公司放出了双足人形机器人 Atlas 的最新酷炫视频。这次&#xff0c;Atlas 展示了它的最新技能「跑酷」。在一系列倾斜胶合板还有木箱垒成的…

BGP协议

概述 BGP是目前“唯一”的EGP协议&#xff0c;用于AS之间传递路由信息&#xff0c;目前版本为4 为什么需要BGP&#xff1f; 不同AS自治系统的管理部门不同&#xff0c;路由策略不同AS之间的路由不强调最优路径&#xff0c;更强调路由控制和路由策略 IGP与BGP对比 IGP关注如…

Science Robotics:新型多足机器人可自行组装,零件损坏时也能继续运动

来源&#xff1a;DeepTech深科技在自然环境中&#xff0c;群体昆虫&#xff08;如蜜蜂、蚂蚁、白蚁等&#xff09;、鱼类和鸟类等动物可以通过合作来完成生物个体难以或不可能完成的任务。受到这些集群行为的启发&#xff0c;许多研究人员研究了自组装或可重构的模块化群机器人…

NAT与DHCP协议

DHCP概述 DHCP产生的原因 大型网络中静态配置IP地址容易出现地址冲突 定义 DHCP&#xff1a;动态主机配置协议&#xff0c;用于主机自动获得IP地址、子网掩码、网关地址、DNS服务器地址&#xff0c;租用期等相关信息。采用C/S模式。DHCP给运行服务器软件、且位置固定的计算机…

OpenGL基础入门及准备

一、计算机图像学相关概念 1.1 计算机图形学&#xff0c;是一种使用数学算法将二维或三维图形转化为计算机显示器所能显示的二维栅格形式的科学。 1.2 屏幕像素组成的网格即称为栅格。 1.3 计算机图形学研究 Modeling&#xff1a;构造场景的三维模型&#xff0c;建模&#…

哈佛商业评论:什么是颠覆性创新?

来源&#xff1a;点滴科技资讯什么是颠覆性创新&#xff1f;在引入该理论 20 年后&#xff0c;我们重新审视了它所解释的和未解释的。本文发表于哈佛商业评论&#xff08;2015 年 12 月&#xff09; 作者&#xff1a;克莱顿 M.克里斯滕森&#xff0c; 迈克尔E雷诺&#xff0c;和…

定长掩码地址划分与VLSM子网划分

定长掩码地址划分 案例 若某个公司得到一个C类网络地址210.33.15.0&#xff0c;假如所有子网的掩码都一样&#xff0c;该如何划分子网&#xff1f; 步骤一&#xff1a;确定子网个数 7个子网&#xff0c;其中4个局域网&#xff0c;3个广域网 步骤2&#xff1a;确定每个子网所需…

OpenGL之几何、投影、裁剪、视口变换以及全局变换与局部变换

一、变换的概念 1.1 图形流水线 1.2 变换&#xff08;Transformation&#xff09; 变换主要分为四个步骤&#xff0c;主要就是在Vertex operations阶段操作顶点信息&#xff0c;会在流水线中依次进行。 几何变换投影变换裁剪视口变换 三维模型到二维图形的主要变换过程&am…

WinForm中DataGridView的TextBoxColumm换行

一、内容超过显示宽度自动换行&#xff1a; 在需要自动换行的列中设置 二、换行符换行&#xff1a; 一开始在需要换行的文本添加"\r\n"并不能直接换行&#xff0c;DGV直接把\r\n显示出来了&#xff0c;后换成 System.Environment.NewLine 解决问题转载于:https://www…