设为首页 收藏本站
查看: 913|回复: 0

[经验分享] Java Servlet系列之Servlet入门

[复制链接]

尚未签到

发表于 2017-2-19 08:12:06 | 显示全部楼层 |阅读模式
  什么是Servlet
          Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
          Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
  Servlet相关名称
  Web服务器
         Web服务器,即Web Server,是Web(互联网)上的一台或多台机器。这些机器上部署了系统软件以及需要在网络中共享的信息。客户端可以通过HTTP协议访问部署到服务器上的资源。
  应用服务器
         应用服务器,即Application Server,是网络上一台或多台机器。这些机器上部署了系统软件用以为客户端以及其他服务器比如Web服务器提供数据服务、业务处理服务等。常见的应用服务器包括文件服务器、打印服务器以及运行着EJB组件的EJB服务器等。
  Servlet容器
         Servlet容器,即Servlet Container,是Web服务器或应用服务器的组成部分,它可以为Servlet提供请求和响应的服务,同时也负责管理Servlet的生命周期。Servlet容器也可以为Servlet提供其它的服务,比如资源服务、安全服务、线程的服务等。Servlet容器即可以集成到Web服务器或应用服务器中,也可以作为独立的程序嵌入到Web服务器或应用服务器中。

  Servlet作用
         Servlet规范通过规定一个编程的框架来达到扩展服务器功能的目的,采用请求-响应模式提供基于Web的服务。当客户机发送请求至服务器时,服务器将请求信息转发给Servlet,Servlet处理请求并生成响应内容并将其传给Web服务器,然后再由Web服务器将响应返回给客户端。

  Servlet实现过程
         最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:


  • 客户端发送请求至服务器端
  • 服务器将请求信息发送至Servlet
  • Servlet生成响应信息并将其传给服务器。响应内容动态生成,通常取决于客户端的请求
  • 服务器将响应返回给客户端

DSC0000.jpg

图为 “客户端与服务器Servlet交互过程”


       其实,一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。
  Web容器
  Web容器有两大功能,分别是:

  • 提供编写Servlet程序所需要的API

  • 提供驻留并执行Servlet程序的环境


       这个Servlet运行环境可以完成Servlet程序的实例化、初始化、调用服务方法和去除Servlet的功能,也就是说Web容器可以管理Servlet的生命周期。Servlet驻留在Web容器中,并由Web容器进行管理。Web容器通过转发Web服务器和Servlet之间的请求与响应来充当两者之间的桥梁。

       常见的Java Web容器包括:Tomcat,JBoss,WebLogic,WebSphere等。


正确认识Servlet
Servlet不可以独立运行
       Servlet必须运行在Servlet容器中,由容器调用它的生命周期方法,上文的Web容器也有声明。因此,Servlet不需要main方法。
Servlet不是线程
       Servlet就是一个普通的Java对象,它实现了Servlet接口,并没有继承于Thread,因此,Servlet不是线程。当服务器接收到客户端请求时,它会在一个单独的线程中来执行Servlet的方法。


与传统CGI的比较
       与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,Servlet有可能彻底取代CGI。

       在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。

       在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择。
     1.  方便
         Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

     2.  功能强大
         在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

     3.  可移植性好
         Servlet用Java编写,ServletAPI具有完善的标准。因此,为IPlanet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、MicrosoftIIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。

     4.  节省投资
        不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。  PS:Servlet入门只是Java Servlet系列的第一篇文章,作为Java Servlet的入门基础知识,后续还会有几篇文章来继续深入的研究Servlet。文章还存在不足之处,欢迎各位大神批评指正。
  参考:《servlet详细讲解》

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-344027-1-1.html 上篇帖子: 成为Java高手的25个学习目标 下篇帖子: 数据库连接池:Druid
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表