servlet有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这 个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。其中 init() 和 destroy() 方法是继承的。
(1) init() 方法
在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet 。 无论有多少客户机访问 Servlet ,都不会重复执行 init() 。
缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。
(2) service() 方法
service() 方法是 Servlet 的核心。每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个“请求”( ServletRequest )对象和一个“响应”( ServletResponse )对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET ,则缺省情况下就调用 doGet() 。 Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。
= 当一个客户通过 HTML 表单发出一个 HTTP POST 请求时, doPost ()方法被调用。 与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。
= 当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时, doGet() 方法被调用。 与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。
Servlet 的响应可以是下列几种类型:
一个输出流,浏览器根据它的内容类型(如 text/HTML )进行解释。
一个 HTTP 错误响应 , 重定向到另一个 URL 、 servlet 、 JSP 。
(3) destroy() 方法
destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。
当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个 Servlet 在运行 service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。
(4) GetServletConfig()方法
GetServletConfig ()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext 。 ServletContext 接口提供有关 servlet 的环境信息。
(5) GetServletInfo()方法
GetServletInfo ()方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。
当服务器调用 sevlet 的 Service ()、 doGet ()和 doPost ()这三个方法时,均需要 “请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。 javax.servlet 软件包中的相关类为 ServletResponse 和 ServletRequest ,而 javax.servlet.http 软件包中的相关类为 HttpServletRequest 和 HttpServletResponse 。 Servlet 通过这些对象与服务器通信并最终与客户机通信。 Servlet 能通过调用“请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。 Servlet 可以调用“响应”对象的方法发送响应,该响应是准备发回客户机的。
分享到:
相关推荐
#### 三、Servlet生命周期详解 ##### 实例化 - **按需创建**:默认情况下,当第一次HTTP请求到达时,容器会创建Servlet的实例。 - **预加载**:通过在`web.xml`中配置`<load-on-startup>`标签,可以在应用启动时...
1、说一说Servlet的生命周期?★★★★★ 答: servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 2、...
首先,我们需要了解Servlet生命周期。Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。当服务器启动或第一次接收到请求时,Servlet会被加载和初始化。初始化阶段通常用于配置Servlet,如设置初始化参数。...
Servlet生命周期包括初始化、服务请求处理和服务终止阶段。在初始化阶段,当Servlet首次被请求时,容器创建一个Servlet实例,并调用`init()`方法;在服务阶段,Servlet根据请求类型调用相应的方法(如`doGet()`、`...
Servlet的生命周期包括四个阶段:加载和实例化、初始化、服务和销毁。在初始化阶段,Servlet会执行`init`方法,通常用于一次性配置和资源的初始化。在服务阶段,`service`方法会根据请求类型调用`doGet`或`doPost`等...
每个Servlet实例都有自己的生命周期,其中`init()`方法用于初始化Servlet,`service()`方法用于处理具体的HTTP请求和响应。 4. **处理业务逻辑**:Servlet内部执行相应的业务逻辑处理。 5. **生成响应**:完成业务...
综上所述,这个“Servlet登录案例源码”涵盖了Servlet生命周期、HTTP请求处理、数据库操作、安全性考虑以及用户会话管理等多个核心知识点,对于初学者理解Web开发中的基础概念非常有帮助。通过实际操作和调试,可以...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段。 2. Servlet工作原理: 当客户端向服务器发送请求时,服务器会根据请求URL找到对应的Servlet实例。如果该Servlet尚未加载和初始化,服务器会创建一个新的...
Servlet生命周期包括加载、初始化、服务、销毁等阶段。与JSP相比,Servlet更适合处理复杂的业务逻辑,而JSP则更适合展示视图。 **3. 创建JSP-Servlet项目** 首先,你需要安装Eclipse IDE,并确保已经配置了Java和...
3. **Servlet生命周期**: Servlet有三个主要阶段:加载、初始化和服务。当第一次请求Servlet时,它会被加载并初始化。然后,对于每个后续请求,Servlet都会处理服务方法,即`doGet`或`doPost`。 4. **处理POST...
5. **Servlet生命周期**:Servlet有自己的生命周期,包括加载、初始化、服务、销毁四个阶段。理解这些阶段有助于优化性能和资源管理。 总结,Servlet和JSP共同构成了Java Web应用程序的基础,提供了一种强大且灵活...
总结来说,这个"Java Servlet登录例子"涵盖了Servlet生命周期、HTTP请求处理、参数获取、数据库交互以及使用JSP创建用户界面等核心概念。这个简单的示例为理解更复杂的Web应用程序开发奠定了基础。通过实践这个例子...
这里需要注意,由于 Servlet 的生命周期管理以及请求转发机制,直接使用 `request` 对象获取 JSP 设置的 `request` 属性通常是不可行的,需要通过特殊的方式(如上述示例)获取原始请求对象。 #### 三、Servlet 向 ...
首先,了解Servlet生命周期是非常重要的。Servlet在服务器启动时被加载,然后等待客户端的请求。当请求到达时,Servlet实例化一个请求处理器(通常是一个服务方法,如`doGet`或`doPost`),处理请求,然后返回响应。...
这个方法是Servlet生命周期中的关键部分,它会调用`doGet()`或`doPost()`等方法,具体取决于请求的方法类型(GET、POST等)。 在`HttpServlet`类中,`service()`方法是这样定义的: ```java public void service...
3. **Servlet的生命周期** - **init()**: 初始化方法,通常在第一个请求到达或根据`web.xml`配置的`load-on-startup`值进行预加载。 - **service()**: 处理请求的主要方法,根据HTTP请求类型调用不同的方法(如`...
首先,我们需要了解Servlet生命周期和HTTP请求处理的基本概念。Servlet在接收到请求时会被实例化,然后调用`service()`方法来处理请求。在文件上传场景下,我们通常会重写`doPost()`方法,因为文件上传通常是POST...
在本文中,我们将详细讲解 Servlet 的生命周期、Servlet 与 CGI 的区别、Runtime 异常、Set 中元素的去重、doGet() 和 doPost() 的调用时机、JSP 和 Servlet 的相同点和不同点、Request 对象的主要方法等知识点。...
在Java Web开发中,"405 - ...在Java Web开发中,理解HTTP方法和Servlet生命周期是关键,这将帮助你有效地处理此类错误。在编程过程中,记得遵循最佳实践,确保每个HTTP方法都有对应的处理逻辑,并且配置正确。