视频教学资源掌握请求转发与重定向掌握在Servlet 中处理表单数据掌握Servlet 编程中常见中文乱码的处理了解会话跟踪技术了解Servlet 与线程安全请在预习前完成下列单词的学习,并将单词写在横线上。隐藏域提交显示隐藏域信息2.编写一个HTML 页面模拟用户登录功能,提交到Servlet 中进行验证。当用户名为“admin”和密码为“123456”时,跳转到成功提示页面并显示登录用户名;当用户名和密码错误时,跳转到错误提示页面,效果如下图所示。......
2023-11-21
Servlet 作为一种在Servlet 容器中运行的组件,必然有一个从创建到销毁的过程,这个过程通常被称为Servlet 的生命周期。Servlet 的生命周期包括加载、实例化、初始化、服务和销毁几个阶段。这个生命周期由javax.servlet.Servlet 接口的init()、service()和destroy()方法所定义。
下面是具体的Servlet 生命周期,如图2.9 所示。
图2.9 Servlet 生命周期
(1)Servlet 容器装载Servlet 类,并实例化一个Servlet 实例对象。
(2)Servlet 容器调用该实例对象的init()方法进行初始化。
(3)如果Servlet 容器收到对该Servlet 的请求,则调用此实例对象的service()方法处理请求并返回响应结果。
(4)Servlet 容器在销毁该Servlet 实例前调用它的destroy()方法。
1.加载和实例化
Servlet 容器负责加载和实例化Servlet,这个过程可以在Servlet 容器启动时执行,或者在Servlet 容器收到对某个Servlet 的请求时才执行,也可以在两者之间的任何时候执行。
2.初始化
在Servlet 加载并实例化后,Servlet 容器必须进一步初始化Servlet,初始化成功后它才能够开始处理客户端请求。初始化的过程主要是读取永久的配置信息、读取初始化参数、连接数据库等,通常这些都是在Servlet 的整个生命周期仅仅需要执行一次的操作。
Servlet 容器通过调用Servlet 的init()方法来完成Servlet 的初始化。init()方法是在Servlet 接口中定义的,但在GenericServlet 中提供了默认实现,因此如果需要在Servlet 的初始化中加入自己特定的处理,就需要重写这个方法。
在init()方法中,Servlet 创建和被初始化它在处理请求时需要用到的资源。在javax.servlet.Servlet 接口中,init()方法的定义如下:
(www.chuimin.cn)
当Servlet 容器调用init()方法时,需要传递参数servletConfig 对象。在重写init()方法时,可通过ServletConfig 对象来获取初始化参数。一般采用如下的方式重写init()方法:
为了简化init()方法的重写方式,可以使用javax.servlet.GenericServlet 类中定义的一个不需要参数的init()方法。当Servlet 容器调用init(ServletConfig config)方法时,该方法会自动调用重写的不带参数的init()方法。一般采用如下方式定义一个不带参数的init()方法:
如果想在该方法中使用ServletConfig 对象,可以通过直接调用getServletConfig()方法来实现。需要注意的是,init()方法不能反复调用,一旦调用就会重载Servlet,所以直到调用destroy()方法卸载Servlet 后才能再次调用。
3.服务
Servlet 被初始化之后,就可以开始处理来自客户端的请求。当Servlet 容器接收到客户端的一个请求时,Servlet 容器就会创建一个ServletRequest 请求对象和一个ServletResponse 响应对象,然后将这两个对象作为参数传递给对应Servlet 对象的service()方法。
service()方法是Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service()方法就要被调用,而且传递给这个方法一个“ 请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet 中已存在service()方法。缺省的服务功能是调用与HTTP 请求的方法相应的do 功能。例如,如果HTTP 请求方法为GET,则缺省情况下就调用doGet()。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。 因为HttpServlet.service()方法会检查请求方法是否调用了适当的处理方法,不必要覆盖service()方法。只需覆盖相应的doXXX 方法就可以了。
当一个客户通过HTML 表单发出一个HTTP POST 请求时,doPost()方法被调用。与POST 请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。
当一个客户通过HTML 表单发出一个HTTP GET 请求或直接请求一个URL 时,doGet()方法被调用。与GET 请求相关的参数添加到URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。
4.销毁
当容器检测到一个Servlet 实例应该从服务中移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要内存或者容器关闭时,容器就会调用Servlet 实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet 实例,该实例随后会被Java 的垃圾收集器所回收。如果再次需要这个Servlet 处理请求,Servlet 容器会创建一个新的Servlet 实例。
在整个Servlet 的生命周期过程中,创建Servlet 实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet 容器会将实例保存到内存中,通过调用它的service()方法为接收的请求服务。
有关Java Web应用开发的文章
视频教学资源掌握请求转发与重定向掌握在Servlet 中处理表单数据掌握Servlet 编程中常见中文乱码的处理了解会话跟踪技术了解Servlet 与线程安全请在预习前完成下列单词的学习,并将单词写在横线上。隐藏域提交显示隐藏域信息2.编写一个HTML 页面模拟用户登录功能,提交到Servlet 中进行验证。当用户名为“admin”和密码为“123456”时,跳转到成功提示页面并显示登录用户名;当用户名和密码错误时,跳转到错误提示页面,效果如下图所示。......
2023-11-21
在ch05 项目中新建一个JSP 文件life.jsp 用于测试JSP 的生命周期。图4.9JSP 生命周期测试相应的控制台输出:第2 次请求life.jsp 页面,浏览器运行效果如图4.10 所示。图4.11JSP 生命周期测试相应的控制台输出:更改JSP 文件内容之后,第4 次请求life.jsp。图4.12JSP 生命周期测试相应的控制台输出:从测试结果不难看出,初始化方法只会在第一次请求的时候执行,若再次请求将不会执行初始化方法,而直接处理用户的请求。......
2023-11-21
视频教学资源了解Servlet了解Servlet 容器掌握在Eclipse 中建立Servlet了解Web.xml 配置文件掌握Servlet 的生命周期了解Servlet 体系结构了解Servlet 常用API请在预习前完成下列单词的学习,并将单词写在横线上。Servlet 中输出信息2.创建一个Servlet 应用程序,输出服务器端信息,效果如下图所示。输出服务器端信息3.客户端浏览器不可以向服务器请求的服务是()。A.地址栏输入待访问页面的URL 信息B.使用层叠样式表C.超链接D.表单提交......
2023-11-21
Servlet 体系结构如图2.10 所示。图2.10Servlet 体系结构Servlet 其实就是实现了javax.servlet.Servlet 接口的类,一般通过继承GenericServlet、HttpServlet 等类来实现。javax.servlet 包主要提供了Web 容器能够使用的接口和Servlet 基本类,它不对应于HTTP 协议;javax.servlet.http 包主要包括与HTTP 协议有关的接口和Servlet 类。图2.11Servlet 的层次结构在图2.11 中,列出了javax.servlet 和javax.servlet.http 这两个包中主要的类和接口及其层次结构。这些类和接口可以简单地划分为以下几个类别:Servlet 基本类和接口Web 请求与响应类Servlet 异常类Servlet 其他类......
2023-11-21
Servlet 体系结构是建立在Java 多线程机制之上的,它的生命周期是由Web 容器负责管理的。当有新的客户端请求该Servlet 时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。Servlet 容器会自动使用线程池等技术来支持系统的运行。图3.24调度者线程选取一个工作者线程来服务请求但是,当两个或多个线程同时访问同一个Servlet 时,可能会发生多个线程同时访问同一Servlet 的情况,如图3.25 所示。图3.25两个工作者线程同时执行一个Servlet 的service()方法......
2023-11-21
完成本任务所用到的主要知识点:在Eclipse 中建立Servlet在web.xml 中配置Servlet配置和获取Servlet 初始化参数在Eclipse 中创建一个Servlet,并在web.xml 文件中为Servlet 添加初始化参数,然后在Servlet 中获取配置的参数并输出。该接口提供了getInitParameter()方法获取Servlet 的初始化参数。创建Servlet首先需要建立一个项目sj3_1。图上机2.2填写包名包建立好后,就在此包中建立Servlet 类。GetInitparameterServlet 类的代码如下:web.xml 配置Servlet 及初始化参数web.xml 代码如下:测试运行发布项目,启动Tomcat 服务器。......
2023-11-21
统一资源定位符也被称为网页地址,是用于完整地描述Internet 上网页和其他资源的地址的一种标识方法。现在它已经被万维网联盟编制为Internet 标准RFC1738 了。例如:其中“http”指使用的协议,“mail.***.com”是服务器名,“80”是端口号,“/a/j/js3/main.jsp”是路径,“?sid=SDeQWJeebVpZIlKECzee”是询问。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明,用户只要键入统一资源定位符的一部分(mail.***.com/a/j/js3/main.jsp?......
2023-11-21
相关推荐