【详解Servlet-1】

一、什么是Servlet

    Servlet是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。  Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议Web服务器

 

二、Servlet的工作模式

  • 客户端发送请求至服务器
  • 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
  • 服务器将响应返回客户端

 

三、Servlet API 概览

Servlet API 包含以下4个Java包:

1. javax.servlet   其中包含定义servlet和servlet容器之间契约的类和接口。

2. javax.servlet.http   其中包含定义HTTP Servlet 和Servlet容器之间的关系。

3. javax.servlet.annotation   其中包含标注servlet,Filter,Listener的标注。它还为被标注元件定义元数据。

4. javax.servlet.descriptor,其中包含提供程序化登录Web应用程序的配置信息的类型。

 

四、Servlet的主要类型

 

五、Servlet工作原理

Tomcat容器—>Servlet容器—>Context容器

 

对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象

启动tomcat时,Servlet容器被创建,每一个web应用都会对应于一个context容器。客户端发起了一次请求的时候,请求根据url地址指定的ip和端口号就能够找到tomcat服务器,然后根据后面工程名也能找到对应的web服务,此时创建一个线程,根据ServletRequest进行请求的发起,servlet只是作为控制器而存在,然后根据页面的请求内容,查找相应的服务,将结果通过servletResonse返回给客户端。注意这里是每个请求一个线程,不是每个用户一个线程,容器并不关心是谁发起的请求。servlet一般只会存在一个实例,是单例模式设计的,如果容器使用了群集,即将容器布置在多个JVM上,那么每个JVM也只会有一个Servlet实例。

 用户请求致使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给用户。

 

 

六、Servlet接口中定义的方法

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;
 
    ServletConfig getServletConfig();
 
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
 
    String getServletInfo();
 
    void destroy();
}

七、Servlet的生命周期

init( ),service( ),destroy( )是Servlet生命周期的方法。代表了Servlet从“出生”到“工作”再到“死亡 ”的过程。Servlet容器(例如TomCat)会根据下面的规则来调用这三个方法:

1. init( ),当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来,但是这个方法在后续请求中不会在被Servlet容器调用,就像人只能“出生”一次一样。我们可以利用init( )方法来执行相应的初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。

2. service( ) 方法,每当请求Servlet时,Servlet容器就会调用这个方法。第一次请求时,Servlet容器会先调用init( )方法初始化一个Servlet对象出来,然后会调用它的service( )方法进行工作,但在后续的请求中,Servlet容器只会调用service方法了。

3. destory,当要销毁Servlet时,Servlet容器就会调用这个方法。在卸载应用程序或者关闭Servlet容器时,就会发生这种情况,一般在这个方法中会写一些清除代码。


Servlet 的其它两个方法

    getServletInfo( ),这个方法会返回Servlet的一段描述,可以返回一段字符串。

    getServletConfig( ),这个方法会返回由Servlet容器传给init( )方法的ServletConfig对象。

【提示】init、destory方法都是只会执行一次的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值