Servlet简介


    一.Servlet简介  
    一个
Servlet程序就是一个在Web服务器端运行的特殊的Java类,这个特殊的Java类必须实现javax.servlet.Servlet接口,Servlet接口定义了Servlet引擎与Servlet程序之间通信的协议约定。Servlet API中提供了一个实现Servlet接口的最简单的Servlet类,其完整名称为javax.servlet.GenericServlet,这个类实现了Servlet程序的基本特征和功能。

         Servlet API中还提供了一个专用于HTTP协议的Servlet类,其名称是javax.servlet.http.HttpServlet,它是GenericServlet的子类,在GenericServlet类的基础上进行了一些针对HTTP特点的扩充。显然,一个Java类只要继承了GenericServletHttpServlet,它就是一个Servlet。为了充分利用HTTP协议的功能,一般情况下,应继承HttpServlet类。

         HttpServlet类有一个service方法,service方法接受两个参数,一个是用于封装HTTP请求消息的对象,其类型为HttpServletRequest;另一个是代表HTTP响应消息的对象,其类型为HttpServletResponse。调用HttpServletResponse对象的getWriter方法可以获得一个文本输出流对象,向这个流对象中写入的数据将作为HTTP响应消息的实体内容部分发送给客户端。

    二.注册Servlet

    在web.xml文件中,一个<servlet>元素用于注册一个Servlet<servlet>元素中包含有两个主要的子元素<servlet-name><servlet-class>,他们分别用于设置Servlet的注册名称和指定的Servlet的完整类名:

<servlet>

     <servlet-name>AnyName</servlet-name>

     <servlet-class>com.ibm.HelloServlet</servlet-class>

</servlcet>

    三.映射Servlet

    在web.xml文件中,一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,客户端将使用Servlet所映射的对外访问路径来访问Servlet<servlet-mapping>元素中包含有两个子元素<servlet-name><url-pattern>,他们分别用于设置Servlet的注册名称和设置Servlet的对外访问路径:

<servlet-mapping>

     <servlet-name>AnyName</servlet-name>

     <url-pattern>/demo/hello.html</url-pattern>

</servlet-mapping>

<url-pattern>子元素中的访问路径必须以正斜杠(/)开头,这个正斜杠(/)表示当前web应用程序的根目录。

    同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。在Servlet映射到的URL中也可以使用通配符*,但只有两种固定的形式:一种格式是“*.扩展名”,在*前面不能有目录分隔符/,例如“*.do”;另一种格式是以正斜杠(/)开头并以“/*”结尾,例如“/action/*”。

   

         四.Servlet的特点

         Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行。Servlet的运行完全由Servlet引擎来调度和控制。Servlet引擎是一种容器程序,它负责管理和维护所有Servlet对象的生命周期,因此也被称之为Servlet容器或Web容器。Servlet的加载、执行流程,以及如何接收客户端发送的数据和如何将数据传输到客户端等具体的底层事务,都是由Servlet引擎来实现的。Servlet引擎负责将客户端的请求信息转交给Servlet和将Servlet生成的响应信息返回给客户端。

 

         五. Servlet的运行过程

      1.接收到访问某个Servlet的HTTP请求之后,Servlet引擎首先检查是否已经装载并创建了该Servlet的实例对象,如果已经装载并创建了该Servlet的实例对象,Servlet引擎将直接执行第4步,否则,执行第2步。
      2.装载并创建Servlet的一个实例对象。
      3.调用Servlet实例对象的init()方法,以便执行Servlet的一些初始化工作。
      4.创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
      5.在一个Web应用程序被停止和重新启动之前,Servlet引擎将卸载其中运行的Servlet。在卸载Servlet之前,Servlet引擎将调用Servlet的destroy()方法,以便在这个方法中执行Servlet的一些清尾工作,例如释放资源。Servlet引擎卸载某个Servlet以后,该Servlet实例对象变成垃圾。等待Java虚拟机的垃圾收集器将其彻底从内存中清楚。
 



 



 

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值