关于 Servlet 和 Web

   文中也只是对Servlet和Web作简单的询问,有个起初的认识,深切的内容有待于进一步去讨论。
T. T _ . _

Web

Web容器:管理和布局Web应用,更加多的是跟基于HTTP的央求打交道。
有别于于应用服务器:能够配备EJB应用,能够达成容器管理的事体,更多的跟数据库、别的服务打交道。

 

Servlet容器

关键职分:管理Servlet的生命周期。

    Servlet 与 Servlet 容器互相依存
,互相又互相独立发展,接口是一连Servlet和Servlet容器的要害,从技术角度来说是为理解耦,通过标准接口来相互协作。

创建Servlet对象

  • [1]
    Servlet容器运行时:读取web.xml配置文件中的信息,构造钦定的Servlet对象,成立ServletConfig对象,并将ServletConfig对象作为参数来调用Servlet对象的init()方法。
  • [2]
    Servlet容器运维后:客户第3遍向Servlet发出请求,Servlet容器会咬定内存中是不是存在钦命的Servlet对象,如若没有则创制它,然后依据客户的伸手创立HttpRequest、HttpResponse对象,从而调用Servlet对象的service()方法。

    在 Web 应用程序中,三个 Servlet
在一个时刻可能被多少个用户同时做客。那时 Web
容器将为各类用户创设一个线程来执行 Servlet。借使 Servlet
不关乎共享财富的标题,不必关怀十二线程难点。但假使 Servlet
必要共享能源,须要保险 Servlet 是线程安全的。

参考:
http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html
http://www.ibm.com/developerworks/cn/java/j-lo-servlet/

与 Applet 比较


Servlet

    Servlet(Server Applet),全称Java
Servlet,是用Java编写的劳动器端程序。狭义的Servlet是指Java语言达成的二个接口,广义的Servlet是指任何达成了这么些Servlet接口的类,三个Servlet
就是 Java 编制程序语言中的1个类。
   
Servlet是一种独立于操作系统平台和互联网传输协议的服务器端Java应用程序,运转于支撑Java的应用服务器中,是Java
Web技术的主干基础。Servlet与历史观Java应用程序的最大不相同在于,它不是从命令行运维的,而是由Java虚拟机的web服务器实行加载。
功能
扩张基于HTTP协议的Web服务器的效率,交互式地浏览和改动数据,生成动态Web页面内容。

生命周期:Servlet加载 – ->
实例化 – -> 服务 – -> 销毁

  • [Java,1]
    init():服务器装入Servlet时实施该方法,负责起先化Servlet对象。能够配备服务器,以在运营服务器或客户机首次访问Servlet衣裳入Servlet。无论有多少客户机访问Servlet,都不会再次执行init()。
  • [2]
    service():Servlet的基本,负责响应客户的请求。每当八个客户机请求三个HttpServlet对象,该对象的Service()方法就要调用,并以2个“请求”(ServletRequest)对象和3个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法,私下认可的劳务职能是调用与HTTP请求的点子相应的do功能。
  • [3]
    destroy():当Servlet对象退出生命周期,服务器端停止且卸载Servlet时实施该办法,负责释放占用的能源。三个Servlet在运作service()方法时或者会时有发生别的的线程,因而在调用destroy()方法时,要保管这么些线程已经告一段落或形成。

   :在Servlet的生命周期中,仅执行三回init()和destroy()方法。

行事原理

  • [1]
    首先简单解释一下Servlet接收和响应客户请求的进度:客户发送三个呼吁,Servlet调用service()方法对请求实行响应。通过源代码看出,service()方法中对请求的艺术开始展览了合营,选拔调用doGet,
    doPost等艺术,然后再进来对应的情势中调用逻辑层的格局,实现对客户的响应。在Servlet接口和GenericServlet中绝非doGet(),doPost()这一个方式,HttpServlet中定义了这么些方法,但是都回到error消息,所以每一遍定义1个Servlet时,都不能够不兑现doGet()或doPost()那么些点子。
  • [2]
    每多个自定义的Servlet都必须完结Servlet接口,Servlet接口中定义了八个法子,个中相比较根本的四个办法涉及到Servlet生命周期,分别是init(),
    service(),
    destroy()方法。GenericServlet是贰个通用的,不特定于任何协议的Servlet,
    达成了Servlet接口。HttpServlet继承于GenericServlet,由此HttpServlet也兑现了Servlet接口。所以定义Servlet时只需继续HttpServlet即可。
  • [3]
    Servlet接口和GenericServlet不特定于其他协议,HttpServlet是特定于HTTP协议的类,所以HttpServlet中贯彻了service()方法,并将呼吁ServletRequest、响应ServletResponse
    强转为HttpRequest 和 HttpResponse。

相关文章