如何用Java实现Web服务器

程序员应用AI大模型创业实现财务自由的100种赚钱方案原理与实战指南 成功的 AI 创业者都遵循着 “技术 + 需求 + 变现” 的铁三角法则。记住:不是要做 “全能大模型”,而是成为某个垂直领域的 “AI 解决方案专家”。现在就开始行动:用周末 2 小时完成第一个 MVP,下周启动种子用户测试,三个月内找到可复制的盈利模式。当你实现第一个 10 万用户时,会发现财务自由的密码藏在持续迭代的每个 0.1 版本更新中。延伸思考:你的技术背景适合切入哪个细分领域? 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 一、HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤: (1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。 (2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名 HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。 (3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。 例:假设客户机与www.mycompany.com:8080/mydir/index.html建立了连接,就会发送GET命令:GET /mydir/index.html HTTP/1.0。主机名为www.mycompany.com的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。 为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。 常用的HTTP头信息有: ① HTTP 1.0 200 OK 这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码“200 OK”表示请求完成。 ② MIME_Version:1.0 它指示MIME类型的版本。 ③ content_type:类型 这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。 ④ content_length:长度值 它指示HTTP体信息的长度(字节)。 (4) 关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。 二、Java实现Web服务器功能的程序设计 根据上述HTTP协议的作用原理,实现GET请求的Web服务器程序的方法如下: (1) 创建ServerSocket类对象,监听端口8080。这是为了区别于HTTP的标准TCP/IP端口80而取的; (2) 等待、接受客户机连接到端口8080,得到与客户机连接的socket; (3) 创建与socket字相关联的输入流instream和输出流outstream; (4) 从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:GET 路径/文件名 HTTP/1.0 (5) 从请求信息中获取请求类型。如果请求类型是GET,则从请求信息中获取所访问的HTML文件名。没有HTML文件名时,则以index.html作为文件名; (6) 如果HTML文件存在,则打开HTML文件,把HTTP头信息和HTML文件内容通过socket传回给Web浏览器,然后关闭文件。否则发送错误信息给Web浏览器; (7) 关闭与相应Web浏览器连接的socket字。 下面的程序是根据上述方法编写的、可实现多线程的Web服务器,以保证多个客户机能同时与该Web服务器连接。 程序1:WebServer.java文件 //WebServer.java 用JAVA编写Web服务器 import java.io.*; import java.net.*; public class WebServer { public static void main(String args[]) { int i=1, PORT=8080; ServerSocket server=null; Socket client=null; try { server=new ServerSocket(PORT); System.out.println("Web Server is listening on port " server.getLocalPort()); for (;;) { client=server.accept(); //接受客户机的连接请求 new ConnectionThread(client,i).start(); i ; } } catch (Exception e) {System.out.println(e);} } } /* ConnnectionThread类完成与一个Web浏览器的通信 */ class ConnectionThread extends Thread { Socket client; //连接Web浏览器的socket字 int counter; //计数器 public ConnectionThread(Socket cl,int c) { client=cl; counter=c; } public void run() //线程体 { try { String destIP=client.getInetAddress().toString(); //客户机IP地址 int destport=client.getPort(); //客户机端口号 System.out.println("Connection " counter ":connected to " destIP " on port " destport "."); PrintStream outstream=new PrintStream(client.getOutputStream()); DataInputStream instream=new DataInputStream(client.getInputStream()); String inline=instream.readLine(); //读取Web浏览器提交的请求信息 System.out.println("Received:" inline); if (getrequest(inline)) { //如果是GET请求 String filename=getfilename(inline); File file=new File(filename); if (file.exists()) { //若文件存在,则将文件送给Web浏览器 System.out.println(filename " requested."); outstream.println("HTTP/1.0 200 OK"); outstream.println("MIME_version:1.0"); outstream.println("Content_Type:text/html"); int len=(int)file.length(); outstream.println("Content_Length:" len); outstream.println(""); sendfile(outstream,file); //发送文件 outstream.flush(); } else { //文件不存在时 String notfound=" Error 404-file not found "; outstream.println("HTTP/1.0 404 no found"); outstream.println("Content_Type:text/html"); outstream.println("Content_Length:" notfound.length() 2); outstream.println(""); outstream.println(notfound); outstream.flush(); } } long m1=1; while (m1<11100000) {m1 ;} //延时 client.close(); } catch (IOException e) { System.out.println("Exception:" e); } } /* 获取请求类型是否为“GET” */ boolean getrequest(String s) { if (s.length()>0) { if (s.substring(0,3).equalsIgnoreCase("GET")) return true; } return false; } /* 获取要访问的文件名 */ String getfilename(String s) { String f=s.substring(s.indexOf(' ') 1); f=f.substring(0,f.indexOf(' ')); try { if (f.charAt(0)=='/') f=f.substring(1); } catch (StringIndexOutOfBoundsException e) { System.out.println("Exception:" e); } if (f.equals("")) f="index.html"; return f; } /*把指定文件发送给Web浏览器 */ void sendfile(PrintStream outs,File file) { try { DataInputStream in=new DataInputStream(new FileInputStream(file)); int len=(int)file.length(); byte buf[]=new byte[len]; in.readFully(buf); outs.write(buf,0,len); outs.flush(); in.close(); } catch (Exception e) { System.out.println("Error retrieving file."); System.exit(1); } } } 程序中的ConnectionThread线程子类用来分析一个Web浏览器提交的请求,并将应答信息传回给Web浏览器。其中,getrequest()方法用来检测客户的请求是否为“GET”;getfilename(s)方法是从客户请求信息s中获取要访问的HTML文件名;sendfile()方法把指定文件内容通过socket传回给Web浏览器。 对上述程序的getrequest()方法和相关部分作修改,也能对POST请求进行处理。 三、运行实例 为了测试上述程序的正确性,将编译后的WebServer.class、ConnectionThread.class和下面的index.html文件置于网络的某台主机的同一目录中(如:主机NT40SRV的C:/JWEB目录)。 程序2:index.html文件 这是用JAVA写出的WEB服务器主页 1998年8月28日 -------------------------------------------------------------------------------- 首先在该主机上用java命令运行WebServer.class: C:/jweb>java webserver 然后在客户机运行浏览器软件,在URL处输入WebServer程序所属的URL地址(如:http://nt40srv:8080/index.html),就在浏览器窗口显示出指定的HTML文档。 注意,不能缺省端口号8080,如缺省,则运行该主机的正常WEB服务器。 说明,不具备网络条件的可在安装了Windows 95的单机上进行测试,方法是用localhost或127.0.0.1代替URL地址的域名部分,即URL地址为http://localhost:8080。
Dify基础:Dify平台的本地化部署(含windows部署中,常见问题及解决方案) 第一种比较简单,只需要在浏览器中,打入https://dify.ai/就可以。这个指令虽然看起来简单,但实际上涉及到对docker的使用。这个项目既然有github地址,那它一般就是开源的。我们点开这个github地址,便能看到dify的私有化部署方式。我们可以看到,还是上面那个图,有个按钮,是指向该项目的Github地址的。第二步:按照dify的github给出的指令,对dify进行安装。第一步:我们把dify下载到自己的电脑(或者服务器)上。这里,我们只考虑第二种方式,也就是私有化部署。 阅读详情

相关推荐

R语言分布式滞后非线性模型DLNM实战:空气污染与健康数据的动态效应可视化与政策启示

本文详细介绍了R语言中分布式滞后非线性模型(DLNM)的应用,特别关注空气污染与健康数据的动态效应可视化。通过dlnm包实现PM2.5等污染物的滞后效应分析,提供从数据预处理、模型构建到结果可视化的完整流程,并探讨了其在公共卫生政策制定中的实际应用价值。

weixin_29079643的博客 514

基于Java的Web服务器设计与实现

HttpServer 类,也不允许使用其它非 Jave SE 库(如各种来源的 servlet-api.jar、jsp-api.jar、jasper.jar、其它相关功能的实现)。1)部分支持 JSP 中的语法,包含基本的 request,response 等。1)支持从 Web.xml 中读取 Filter 配置信息,实现标准的 filter 行为。2)界面包含启动按钮。3)标准的 Servlet 代码,无需修改在开发的系统中能够运行。3)能响应请求的目录的信息,并以列表显示;

毕业作品网站 1225

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1384

JavaWeb服务器开发(精品这一套就足够)

物理服务器: 从硬件层面认识服务器: 服务器是计算机的一种,它比普通个人计算机运行更快、负云服务器: 很多公司都会去阿里云、腾讯云、百度云等公司租赁 载更高、价格更贵。 由于服务器不间断的一直运行,噪音大、需要散热,所以通常情况都不会自己购买服务器 服务器程序:跑在物理服务器上的应用程序(用编程语言边写出来的,比如java,php,js等等)web服务器,又称为网站服务器,就是给用户提供网站服务的,开发者可以把自己搭建的网站发布到web服务器上,让全世界的用户访问到。 常见的web服务器有:tomcat、n

SYJ的博客 6165

别再死磕Excel了!用Vensim PLE免费版,30分钟搞定你的第一个系统动力学模型

本文介绍如何使用Vensim PLE免费版在30分钟内构建第一个系统动力学模型,无需编程或数学基础。通过个人储蓄增长案例,详细讲解因果回路图绘制、存量流量图创建及方程编写,帮助读者掌握动态系统建模与仿真技巧,适用于理财、项目管理等多种场景。

weixin_29045001的博客 329

西门子PLC实战:基于1200/1500的工业物联网MQTT通讯全解析

本文详细解析了如何在西门子S7-1200/1500系列PLC上实现工业物联网MQTT通讯。通过从硬件准备、网络配置到TIA Portal中MQTT_Client功能块的实战编程,手把手指导工程师打通车间数据桥梁,解决信息孤岛问题,实现PLC数据高效上云或设备间互联。

whisky的博客 1090

使用java自制简易web服务器

记得好多年前,刚刚开始学javaweb的时候,老师教的第一件事是安装jdk,第二件事就是安装tomcat了。当时老师的操作是,下载完压缩包后解压,然后把tomcat的bin目录添加到环境变量里面,然后打开黑乎乎的cmd,输入catalina就可以运行tomcat了。当时还不知道为什么只要添加了环境变量,就可以在cmd里面启动tomcat,更不要说为什么我们什么都没有设置,输入一个命令就能启动web服务器了。

haohulala的博客 2233

【人工智能】人工智能基础概念、流派、发展史

人工智能初衷就是让计算机能够像人类一样具有自我思考、自我学习、自我决策的能力。依据百度百科上对人工智能定义:人工智能是研究、开发用于模拟、扩展和延伸人的智能的理论、方法、技术及应用系统的一门新的技术学科。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

WEL测试 1882

java 网络服务器_如何用Java实现Web服务器

如何用Java实现Web服务器一、HTTP协议的作用原理WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状...

weixin_30297493的博客 729

Python 爬虫实战:豆瓣电影海报批量获取(Top250 榜单 + 可视化展示)

在信息爆炸的时代,数据已成为决策的核心,而数据的获取是数据分析的第一步。本文将详细介绍如何利用 Python 爬虫获取豆瓣电影 Top250 榜单的海报,并对数据进行可视化展示,助你更好地了解电影市场的趋势和用户的喜好。

yansideyucsdn的博客 718

python:实现矩阵SVD分解(附完整源码)

python:实现矩阵SVD分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 603

全网最详细JavaWeb环境配置,以及服务器搭建

JavaWeb环境配置,以及服务器搭建

lz17267861157的博客 9248

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

用Java实现Web服务器

来源:JAVA中文站   摘要:WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答。根据上述HTTP协议的作用原理...

大树下那片阴凉 1634

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

用Java实现Web服务器 HTTP协议

用Java实现Web服务器广西财政高等专科学校 徐 辉  一、HTTP协议的作用原理  HTTP协议的作用原理包括四个步骤:1.连接:Web浏览器与Web服务器建立连接。2.请求:Web浏览器通过socket向Web服务器提交请求。3.应答:Web浏览器提交请求后,通过HTTP传送给Web服务器。Web服务器接到请求后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏

hem的专栏 2303

java实现web服务器_简单实现Java web服务器

一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现;一、程序执行步骤1.创建一个ServerSocket对象;2.调用ServerSocket对象的accept方法,等待连接,连接成功会返回一个Socket对象,否则一直阻塞等待;3.从Socket对象中获取InputStream和OutputStream字节流,这两...

weixin_30702441的博客 1020

java实现web服务器_java实现web服务器

java实现web服务器首先上代码:1 /**2 *@authorhewenwu3 * 功能:模拟web服务程序4 * 原理:java多线程、socket编程,TCP协议5 */67 import java.io.*;8 import java.net.*;910 public classweb_server{1112 public static voidmain(String args...

weixin_26759093的博客 1193

java web服务_如何用Java实现Web服务器

展开全部如何用Java实现Web服务器 一、HTTP协议的作用原理WWW是以Internet作为传输媒介的一个应用系e69da5e887aa62616964757a686964616f31333335346138统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。...

weixin_33724759的博客 775

[转载]用Java实现Web服务器

用Java实现Web服务器摘要:WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应...

congji3817的博客 278

用java 实现一个简单的web 服务器

import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /**  * Socket + Thread + FileIO  *   * 服务器运行机制:  * 1. 启动服务器,处于运行状态  * 2. 能接收到请求  * 3. 分析请求内容  * 4. 处理响应内

Java编程语言学习专栏 3573

java实现web服务器_Java 实现一个简单的web服务器

在日常的开发中,我们用过很多开源的web服务器,例如tomcat、apache等等。现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器。web服务基于的是HTTP协议,用户在浏览器的地址栏输入要访问的地址,服务器如何得到该地址是个关键。先看下一般的HTTP请求和响应报文的一般格式:HTTP 请求报文 HTTP 响应报文 二 socket类 ...

weixin_29001683的博客 2529

用Java实现Web服务器 [转]

计算机世界1999年第9期 广西财政高等专科学校 徐 辉   一、HTTP协议的作用原理   HTTP协议的作用原理包括四个步骤: 1.连接:Web浏览器与Web服务器建立连接。2.请求:Web浏览器通过socket向Web服务器提交请求。3.应答:Web浏览器提交请求后,通过HTTP传送给Web服务器。Web服务器接到请求后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏

JAVATEC - 伊艾法 [E.Alpha] 914

web服务器 java实现_Java实现简单web服务器

Java实现简单web服务器以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!该程序简单实现web服务器 目前仅支持和gif/jpeg格式 下面是代码import java io * ;import * ;import java util * ;public class SimpleWebServer {public st...

weixin_29898529的博客 445
上一篇: 对JAVA语言的十个常见误解
下一篇: jsp的安装,何志强篇
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值