zoukankan      html  css  js  c++  java
  • Servlet详解(一)

    一、C/S与B/S模式

      1.CS(Client Server):客户端模式,即需要用户安装有客户端,并使用客户端与服务器进行交互,我们常见的网络游戏,PC软件等都是采用的CS模式。

       优点:由于很多工作可以通过服务器处理后再发送给服务器,大大利用了用户PC的处理能力,提高了响应速度。且将客户端与服务器分离,利于维护。

       缺点:需要用户安装客户端,且由于系统不同,需要不同的版本以及各版本的维护,每次升级维护都需要把所有客户端更新。

      

      2.BS(Brower Server):浏览器模式,即用户使用浏览器通过域名来访问服务器,与服务器交互。我们日常中使用浏览器浏览的网页都是采用的eBS模式。

        优点:维护,升级简单,仅仅需要修改服务器。使用方便,用户可以直接通过浏览器访问,可拓展性好,web平台无关性。

      3.在Java Web中我们使用的为BS模式。

    二、Servlet

      1.Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层,换言之,Servlet是一个接受客户端请求,并执行Servlet程序,返回响应的一个程序。

      2.Servlet的优点:

                Servlet作为贡献资源的单线程,使得系统资源被有效利用(不过线程不安全);

                Servlet有线程池的概念,利用多线程优点,事先与数据库建立连接,需要时则申请一个连接使用。总体来说大大提高了响应速度。

                是MVC的基础,其他很多框架都是基于他实现的,且直接将底层api暴露给程序员,更容易清楚mvc特点,可被封装。

      3.Servlet的缺点:

                web.xml配置麻烦,每一个Servlet都需要配置一下;

                doget,dopost都需要传入request,response两个与容器相关的参数,具备容器依赖性,测试不便;

      4.Servlet的运行过程 :

               发起请求--》进入web.xml文件找到Servlet--mapping中的url-pattern找到Servlet-name--》再到Servlet配置中通过Servlet-name找到Servlet-class--》如果没有配置load-on-start ,则先初始化Servlet--》根据请求的方式(get或者post)找到相关方法,或者进入Service,由service自行寻找。--》执行Servlet方法--》返回响应给请求者。

               下图为在web.xml中的寻找路径。

                        

    三、Servlet的生命周期

          1.Servlet的初始化:调用构造器创建,但是再调用后,会自行调用init初始化对象,不过与构造器相同,init对于一个Servlet只能调用一次(存疑,不过没意义)

              (1)load-on-start:当tomcat server实例被启动成功时,就会直接随着server而创建,推荐使用,在创建时启动,而不是每次访问时Servlet是再创建。

              (2)当第一次访问Servlet时,被创建并初始化。

          2.Servlet的服务:

              (1)使用service时,每次请求都会调用service,而service会自动判断请求是doget还是dopost,并跳转到get或则post执行。

              (2)直接重写service,会直接进入service,不会进入doget或则dopost,不过虽然没有调用doget方式,但是类似doget方式(所有信息在url中)

          3.Servlet的结束:

              (1)一般情况下,Serlet对象并不会直接被销毁,而是等到服务器关闭时才被先于服务器关闭前销毁,基本用于关闭掉一些关键的释放代码,destory()。

                  

               

  • 相关阅读:
    RabbitMQ修改端口号和心跳时间
    RabbitMQ常用命令行
    机票分页存储过程!
    Sql Server随机取数据
    Entity framewok 如何实现多条记录作为一条取出, for xml path如何实现
    AJAX请求时status返回状态明细表 readyState的五种状态
    最小化到托盘,右键退出
    post注入及提权思路
    MySQL提权之user.MYD中hash破解方法
    鸡肋提权之变态root利用
  • 原文地址:https://www.cnblogs.com/qqwhsj/p/10845569.html
Copyright © 2011-2022 走看看