您当前的位置:首页 > 互联网教程

如何用Java实现Web服务器

发布时间:2025-05-19 12:44:46    发布人:远客网络

如何用Java实现Web服务器

一、如何用Java实现Web服务器

如何用Java实现Web服务器一、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命令的格式为:

文件名指出所访问的文件,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体信息之间用一个空行分开。

这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码“200 OK”表示请求完成。

这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。

它指示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服务器连接。

//WebServer.java用JAVA编写Web服务器

public static void main(String args[]){

server=new ServerSocket(PORT);

System.out.println("Web Server is listening on port"+server.getLocalPort());

for(;;){client=server.accept();//接受客户机的连接请求

new ConnectionThread(client,i)。start();

} catch(Exception e){System.out.println(e);}

/* ConnnectionThread类完成与一个Web浏览器的通信*/

class ConnectionThread extends Thread{

Socket client;//连接Web浏览器的socket字

public ConnectionThread(Socket cl,int c){

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);

sendfile(outstream,file);//发送文件

outstream.println("HTTP/1.0 404 no found");

outstream.println("Content_Type:text/html");

outstream.println("Content_Length:"+notfound.length()+2);

outstream.println(notfound);

二、java和javaweb和web的区别

java-- java写的程序。(java工程)

javaweb--用java语言写的能在web容器中运行的程序(一般指j2ee)

web--则一般指纯的html语言编写的web程序。一、Java

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java

技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java文件格式,即各种文件夹、文件的后缀。

Java虚拟机(JVM),即处理*.class文件的解释器。

Java分为三个体系,分别为Java SE(J2SE,Java2 Platform Standard Edition,标准版),

JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企业版),

Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java

net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

WEB前端,对应的职位是HTML5开发工程师、WEB前端开发工程师。这种职位主要的工作内容,是将设计师制作好的PSD图制作成网页,网站当中的结构、样式、行为都是由WEB前端开发工程师完成的。

JAVA是后台语言的一种,和PHP、ASP.NET属于同类型语言。它们要做的是数据库的搭建以及将数据放置到前端制作好的网页当中。

WEB前端:具有一定的可视性,在书写一些代码后能够立即查看到相应的效果,在JavaScript方面对逻辑方面有一定的要求,一定的逻辑能力加上对细节的一丝不苟,才能够完成相应的工作内容。

JAVA:逻辑能力方面要求较高,书写的后台代码以及数据库操作,无法实时展示,较抽象,无法所做即所得、随时查看效果。

适用人群是基于两种技术特点而定

WEB前端:学习者逻辑能力一般,喜欢处理样式、制作网页特效,希望即时性的看到代码效果

JAVA:学习者逻辑能力很强,注重非可视性内容的优化,如网页加载速度、用户交互的时长等

初期入行来说,WEB前端的入行门槛要稍低于JAVA语言,根据行业特点,入行薪资也会稍有变化,2015~2017年,前端入行薪资相对较高

后期薪资两者水平基本一致,甚至JAVA薪资水平要稍高于前端。

未来职业发展过程当中,无论是从事WEB前端还是JAVA,都会向“全端”方向发展

前端走向“熟练掌握前端开发,又对后台语言有所了解”

后台走向“熟练掌握后台语言开发,并掌握基本的前端开发知识”。

WEB前端:《HTML5布局之路》《Head First JavaScript程序设计》《JavaScript权威指南》等

JAVA:《Head First JAVA》《JAVA编程思想》等

三、在java web接口有哪些

1、Servlet是Java Web开发中核心的组件之一,它是用于处理HTTP请求的服务器端程序。Servlet可以接收客户端的请求,处理请求并返回响应。通过Servlet,开发者可以处理Web应用程序中的各种业务逻辑。

2、二、JSP(JavaServer Pages)接口

3、JSP是一种基于Servlet的技术,它允许开发者在HTML中嵌入Java代码,从而实现了Web页面的动态生成。JSP可以简化Web开发过程,提高开发效率。通过JSP,开发者可以方便地将Java代码与Web页面进行整合,实现更加丰富的Web应用程序。

4、RESTful API是一种基于HTTP协议的API接口,它通过特定的请求方法(如GET、POST、PUT、DELETE等)和URL路径来访问服务器资源。在Java Web开发中,开发者可以使用Spring框架等提供的支持来构建RESTful API接口,实现前后端分离,提高应用程序的可扩展性和可维护性。

5、Struts是一种流行的Java Web开发框架,它提供了一种基于MVC(Model-View-Controller)模式的开发方式。在Struts框架中,Action接口是控制器(Controller)的重要组成部分,用于处理用户的请求并调用相应的业务逻辑。通过Action接口,开发者可以更好地组织和管理Web应用程序中的业务逻辑。

6、以上即为Java Web开发中常见的几种接口。每种接口都有其特定的应用场景和优势,开发者可以根据实际需求选择合适的接口进行开发。例如,Servlet和JSP适用于传统的Java Web应用程序开发,RESTful API适用于构建现代化的、基于API的Web服务,而Struts框架中的Action接口则适用于基于MVC模式的Web应用开发。