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相关操作。