web服务器原理初探

本文详细阐述了静态网页和动态网页的工作原理,并通过实验模拟了Web服务器接收并解析浏览器发送的HTTP请求的过程。实验展示了如何从浏览器接收到请求,通过服务器端的处理,最终将动态网页转化为标准的静态页面发送回客户端。

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

一、静态网页的工作原理如下:
A、用户在浏览器的地址栏输入要访问的地址并回车,触发这个浏览请求。
B、浏览器将请求发送到Web服务器。
C、Web服务器接受这个请求,并根据请求文件的后缀名判定是否为HTML文件。
D、Web服务器从服务器硬盘的指定位置或内存中读取正确的HTML文件然后将它发送给请求浏览器。
E、用户的浏览器解析这些HTML代码并将它显示出来。

二、动态网页的工作原理如下:
当用户请求的是一个动态网页时,服务器要做更多的工作才能把用户请求的信息发送回去,服务器一般按照以下步骤进行工作:
A、服务器端接受请求。
B、Web服务器从服务器硬盘指定的位置或内存中读取动态网页文件。
C、执行网页文件的程序代码,将含有程序代码的动态网页转化为标准的静态页面(HTML)。
D、Web服务器将生成的静态页面代码发送给请求浏览器。  

本次试验模拟web服务器接收并解析浏览器发送过来的http请求。

public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
InputStream input = null;
int i=0;
try {
serverSocket = new ServerSocket(9999);
socket = serverSocket.accept();
input = socket.getInputStream();

StringBuffer request = new StringBuffer(2048);
byte[] buffer = new byte[2048];
   try {
     i = input.read(buffer);
   }
   catch (IOException e) {
     e.printStackTrace();
     i = -1;
   }
   for (int j=0; j<i; j++) {
     request.append((char) buffer[j]);
   }
System.out.println(request.toString());



} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
input.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}


运行程序,在浏览器输入:http://localhost:9999/index.jsp,在控制台打印信息如下:

GET /index.jsp HTTP/1.1
Host: localhost:9999
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

得到以上的http信息后就可以对http请求进行解析,进而实现后面的response相关操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值