JSP&Servlet底层机制

Published: 08 Jun 2012 Category: 编程

 

网站工作机制

客户端与用户交互,用户通过客户端向服务器发送请求信息,Web服务器接收到客户的请求后查找资源,并将资源发挥给客户端。在这个过程,用到了两个比较重要的概念HTML标签语言和HTTP协议。

  • ?HTML:用标签来描述客户端应该显示给用户的界面。服务器对某一请求做出的回答一般是一个HTML页面,客户端获得后显示给用户。
  • ?HTTP:服务器和客户通信所使用的协议。主要分为:
    • ?HTTP请求
      • Get方法:简单的请求,不从客户端传送数据给服务器。(可以带一些参数,会直接显示在URL后面)
      • ?Post方法:可以请求某个资源,同时向服务器发送一些数据(如用户名、密码等)
      • Get和Post传递参数不同,Get直接在URL里面体现,而Post会在请求首部后面添加消息体(有效负载),用户无法从URL中看到。

    • <li>HTTP响应:包括响应首部和内容。首部包括一些响应的属性,如Content-type表示告诉浏览器要接受的数据是什么类型。</li>
      

总之,网站工作机制如下:

1)?????? 用户提交一个URL(或表单)

2)?????? 浏览器创建一个HTTP GET(或Post)请求

3)?????? HTTP请求发送给服务器

4)?????? 服务器找到相应资源

5)?????? 生成HTTP响应

6)?????? 发送给客户端(浏览器)

7)?????? 浏览器显示资源,一般是一个HTML页面

 

动态页面生成机制

以上是静态的网站,在动态网站中,主要不同时在第3步。服务器无法找到相应的资源,而是要去生成一个页面。这是我们就需要另一个应用,Web服务器与它交互生成页面返返回给客户端。

容器就是这么一个应用程序。当某个请求指向servlet而不是静态html页面,Web服务器把这个请求交给容易,容器调用servlet获得响应。

  • 使用容器管理和运行servlet减少了很多工作量,他提供一些功能。
  • 通信支持:让Web服务器和servlet对话。
  • 生命周期管理:初始化servlet、调用servlet及回收资源。
  • 多线程支持:某个servlet请求创建一个新的线程。
  • 声明方式实现安全:使用XML部署描述文件配置。
  • JSP支持。

 

容器处理请求的步骤:

1)?????? 容器收到请求

2)?????? 创建两个对象HttpServletResponse和HttpServletRequest

3)?????? 根据请求中的URL找到正确的servlet,为这个请求创建一个线程,并将请求和响应对象传递给这个线程。

4)?????? 容器调用servlet的service()方法,此方法根据请求类型调用doGet()或doPost()方法。

5)?????? 在doGet或doPost方法中生成动态页面,并将动态页面放入响应对象中。

6)?????? 容器将响应对象转换为HTTP响应,发送给Web服务器。