Servlet相关知识

1.Servlet简介

        Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。他先于JSP产生,可以方便地对Web应用中的HTTP请求进行处理。在JavaWeb程序开发中,Servlet主要用于处理各种业务逻辑,它比JSP更具有业务逻辑层的意义,而且Servlet在安全性,扩展性以及性能方面都十分优秀,它在JavaWeb程序开发以及MVC框架的应用方面起到了极其重要的作用。

        狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

        最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。

2.Servlet生命周期

        一般来讲,servlet只会初始化一次,整个过程中只存在一个servlet对象,即便是有多次访问,依然只有一个可以复用的对象。Servlet的生命周期就是servlet类究竟在什么时候创建,调用了何种方法,最后在什么时候被销毁。servlet的整个生命周期,都是由tomacat,也就是服务器控制的。

3.Servlet实现过程

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

  1. 客户端发送请求至服务器端;

  2. 服务器将请求信息发送至 Servlet;

  3. Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;

  4. 服务器将响应返回给客户端。

4.Servlet实现过程中的三个方法

         1.init( )

        当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来,在后续请求中该方法不会再次调用。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。调用这个方法时,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。

        2.service( )

        该方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。

        3.destory()

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

5.Servlet编程接口

        HttpServlet使用一个 HTML 表单来发送和接收数据。要创建一个 HTTPServlet,请扩展HttpServlet类, 该类是用专门的方法来处理 HTML表单的 GenericServlet 的一个子类。 HTML 表单是由 和 标记定义的。表单中典型地包含输入字段和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是init的。

        除了第四点中提到的三个主要方法以外,还有以下几个重要的方法:

        1.doGet() 方法

        当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时,doGet() 方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。

        2.doPost() 方法

        当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost() 方法被调用。与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。

        3.getServletConfig() 方法

        getServletConfig() 方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext。ServletContext 接口提供有关 servlet 的环境信息。

        4.getServletInfo() 方法

        getServletInfo() 方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。当服务器调用 sevlet 的 service()、doGet() 和 doPost() 这三个方法时,均需要 “请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。

6.Servlet优势特点

        1.方便

        Servlet 提供了大量的实用工具例程,例如自动地解析和解码 HTML 表单数据、读取和设置 HTTP头、处理Cookie、跟踪会话状态等。

        2.安全

        Servlet使用了Java的安全框架,同时Servlet容器还扩展了功能。

        3.功能强大

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

        4.可移植

        Servlet 用 Java 编写,Servlet API具有完善的标准。因此,为 IPlanet Enterprise Server 写的 Servlet 无需任何实质上的改动即可移植到 Apach、MicrosoftIIS 或者 WebStar。几乎所有的主流服务器都直接或通过插件支持 Servlet。Java语言是跨平台的,也与协议无关,而由Java编写的Servlet继承了Java的优点。

        5.性能高效

        Servlet对象在Servlet容器启动时初始化,但第一次被请求时,Servlet容器将被实例化,此时它储存于内存中。如果存在多个请求,Servlet不会再被实例化,仍然由此Servlet容器对其进行处理。每一个请求是一个线程,而不是一个进程,因此,Servlet容器对请求处理的性能十分高效的。

        6.可扩展

        Java语言是面向对象的编程语言,Servlet由Java语言编写,所以它继承了Java语言的面向对象的优点,在业务逻辑处理中,可以通过封装、继承等来扩展实际的业务需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值