码迷,mamicode.com
首页 > Web开发 > 详细

HTTP 什么是Servlet

时间:2018-01-10 14:13:14      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:没有   div   servlet   http请求   方便   脚本   也有   线程   html   

  HTML是静态页面,只能保存静态内容。动态页面指根据不同时间、不同用户而显示不同内容的页面。

 

  生成动态页面的两种方法:

  1. 使用CGI。CGI全称是公共网关接口,使用Perl脚本编写。

  2. 使用Servlet。Servlet是使用Java语言编写的服务端程序,运行在Web服务器中的Servlet容器中,实现请求/响应的Web服务模式。

 

  两者区别如下:

  1. 可移植性强

  因为Java语言具有跨平台和可移植性强的特点,使得Servlet也有较好的可移植性,即无需修改代码就可以部署到多种不同类型的Web服务器上,所以Servlet比CGI可移植性更好。

  2. 执行效率高

  CGI处理一个请求时会创建一个进程,而Servlet处于服务器进程之中,处理一个请求时会创建一个线程,因为线程的创建与上下文切换开销比进程更小,所以Servlet执行效率更高。

  3. 功能强大

  Servlet可以与Web服务器直接交互,而CGI无法与Web服务器直接交互。

  4. 使用方便

  Servlet提供了许多接口来读取或设置HTTP头消息,可以处理Cookie和跟踪会话状态,而CGI没有。

  5. 可扩展性强

  因为Java语言是健壮的、面向对象的编程语言,很容易扩展,所以Servlet可扩展性强于CGI。

 

  Servlet处理HTTP请求流程如下:

  技术分享图片

  1. 客户端向服务端发送HTTP请求。

  2. Web服务器接收到该请求后,会把该请求交给容器处理,容器会创建两个对象:HttpServletResponse和HttpServletRequest。

  3. 容器根据URL找到对应的Servlet,创建一个新的线程,把第2步创建的两个对象传递给该线程。

  4. 容器调用Servlet的service()方法来响应用户请求,而service()方法会调用doPost()方法或doGet()方法完成具体的响应任务,把生成的动态页面返回给容器。

  5. 容器把响应消息封装成HTTP格式,返回给客户端。此时,这个线程运行结束,删除第2步创建的两个对象。

 

  参考资料

  《Java程序员面试笔试宝典》 P166-168

HTTP 什么是Servlet

标签:没有   div   servlet   http请求   方便   脚本   也有   线程   html   

原文地址:https://www.cnblogs.com/WJQ2017/p/8257783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!