Servlet编程总结 1

  • Servlet对象的生命周期是由Servlet容器控制的。
  • Servlet的生命周期中的各方法的调用代码表示:  

 1 package cn.servlet.life;
 2 import java.io.IOException;
 3
 4 import javax.servlet.ServletConfig;
 5 import javax.servlet.ServletException;
 6 import javax.servlet.ServletRequest;
 7 import javax.servlet.ServletResponse;
 8 import javax.servlet.http.HttpServlet;
 9
10 public class LifeDemo extends HttpServlet {
11
12     /**
13      * 1.构造方法
14      */
15     public LifeDemo(){
16         System.out.println("1.servlet对象被创建了。");
17     }
18
19     /**
20      * 2.init方法
21      */
22     @Override
23     public void init(ServletConfig config) throws ServletException {
24         System.out.println("2.init方法被调用");
25     }
26
27     /**
28      * 3.service方法
29      */
30     @Override
31     public void service(ServletRequest req, ServletResponse res)
32             throws ServletException, IOException {
33         System.out.println("3.service方法被调用");
34     }
35
36     /**
37      * 4.destroy方法
38      */
39     @Override
40     public void destroy() {
41         System.out.println("4.servlet对象销毁了");
42     }
43
44
45 }

  1. 在以上的代码中,整个Servlet生命周期中有4个方法被调用:1、无参构造方法;2、init(ServletConfig confit)有参的init方法;3、处理请求的service()方法;4、销毁Servlet对象的destroy()方法。
  2. 运行以上的代码,当第一次访问该Servlet时的输出结果如下,证明1、2、3方法都被执行了:

    1.servlet对象被创建了。
    2.init方法被调用
    3.service方法被调用

    当再次访问这个Servlet时,输出结果如下,只有service()方法被调用。:

    3.service方法被调用

  注意:Tomcat是通过反射机制调用Servlet的无参构造器去初始化Servlet对象的。

  ----------------------------------------------------------------------------------------------------------------------------------------------

Servlet的继续体系:

在这个体系中,根接口是Servlet,直接的实现类是:GenericServlet, HttpServlet,这二个是都是抽象类,并且HttpServlet继承了GenericServlet类。

-------------------------------------------------------------------------

Servlet完成初始化后,Tomcat会传入的对象有:

  • HttpServletRequest  请求对象:获取请求信息
  • HttpServletResponse 响应对象: 设置响应对象
  • ServletConfig对象    servlet配置对象
  • ServletContext对象; servlet的上下文对象

重点是ServletConfig和ServletContext对象,

  ServletConfig对象是在Servlet容器调用带参数的init()方法时传入的,是通过GenericServlet的源码得知的:

  private transient ServletConfig config;

  public void init(ServletConfig config) throws ServletException {
  this.config = config;
  this.init();
  }

  public void init() throws ServletException {

  }  

也就是说,Servlet容器调用init的带参数的方法,并且把ServletConfig对象传入了,这个带参数的init方法只是为了初始化ServletConfig对象的,在这个方法内部还调用了不带参数的init方法,这个方法是提供给使用者可以去覆盖的,带参数的方法一般不建议覆盖,否则GenericServlet中的init方法将不再被执行,也就得不到ServletConfig对象了。

注意,查看源码得知,HttpServlet中没有提供覆盖的init方法,HttpServlet继承了GenericServlet类,而我们自定义的Servlet类又继承了HttpServlet类,所以当我们自定义的Servlet不去覆盖GenericServlet中的带参数的init方法时,Tomcat将直接执行GenericServlet中的Init方法,并将ServletConfig对象传入了。

-----------------------------------------------------------------------------------------------

ServletConfig对象的作用:

  主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)

时间: 2024-08-03 17:42:36

Servlet编程总结 1的相关文章

JSP(4) ----servlet 编程1

Servlet Servlet是很多框架的技术基础 Servlet是特殊的java类,没有main方法,运行于服务端,创建和销毁都由Servlet容器管理 Servlet容器值tomcat. Servlet与http紧密联系,Servlet可以处理几乎所有http相关的内容 简单的Servlet程序,输出hello 添加Servlet类: package com.jike.servlet; import java.io.IOException; import java.io.PrintWrite

Servlet学习(三)Servlet编程实例-网站登录(修改版-增加数据库-附源码)

我们为刚才的那个示例Servlet学习(二)Servlet编程实例-网站登录添加上数据库,组成一个较为完整的登录功能. 在开始之前我们得首先了解下一些常用的java术语: PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了. 通常对应数据模型(数据库),本身还有部分业务逻辑的处理. 可以看成是与数据库中的表相映射的java对象. 最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合. PO中应该不包含

Servlet编程-验证码示例

Servlet编程基本思想我上一篇文章已经说过,这里就不多说了,给大家分享一个用Servlet实现验证码验证的示例. 首先我们需要一个Servlet类:ImageServlet.java来产生验证码并将验证码存放到Session中 接下来,我们需要配置web.xml文件添加Servlet 好,现在我们写一个登录页面,就可以实现验证码的显示了login.jsp 最后,我们只需要验证Session中的验证码和用户提交的验证码是否一致,再建一个login_check.jsp来验证验证码. 现在,一个完

Servlet编程基础概述-MVC控制层

要介绍Servlet有一大堆的文字,相信有的朋友像我一样讨厌看很多文字,我长话短说: 大家有没有总结过,我们用JavaBean编程是实现了把Java代码和JSP文件的HTML代码分开了,但是:我们在Java代码中不能使用JSP内置对象,也就是JavaBean不能使用request.response等对象来接收和传递页面信息,只能实现简单的静态功能. Servlet就是一个可以动态引用request.response...的Java类,和JAVABEAN一样运行在服务器端.我们称之为中间控制层(C

Servlet编程:(5)ServletContext

如何开发一个Servlet Servlet的映射路径 Servlet缺省路径 Sevlet的生命周期 Servlet的自动加载 有参的init方法和无参的init方法 Servlet的多线程并发问题 ServletConfig对象 ServletContext对象 Servlet学习 序号 对象 作用 1 HttpServletRequest请求对象 获取请求信息 2 HttpServletResponse响应对象 设置响应对象 3 ServletConfig对象 servlet配置对象 4 S

Servlet编程实例 续4

---------------siwuxie095 JSP+Servlet+JDBC 继续完善登录实例,将校验逻辑改为:从数据库中获取用户信息进行校验 数据库准备 在 Navicat for MySQL 中创建连接:user_conn,创建数据库:user_db, 创建表:user,并内置数据: JDBC 驱动准备 下载 MySQL 的 JDBC 驱动,下载链接: https://dev.mysql.com/downloads/connector/j/ mysql-connector-java-

Servlet编程

软件152 罗杰 1. Servlet概念:Servlet是一种JavaEE的web组件,以Java类的形式存放,以Web形式 读取.继承了HttpServlet类 2. 引入的包:java.io.*;javax.servlet.*;javax.servlet.http.* 3. Servlet配置:在WEB-INF下得web.xml文件下 a) 声明Servlet: <servlet>    <servlet-name>类名</servlet-name><!-声

Servlet编程:(1)如何使用Servlet

如何开发一个Servlet Servlet的映射路径 Servlet缺省路径 Sevlet的生命周期 Servlet的自动加载 有参的init方法和无参的init方法 Servlet的多线程并发问题 ServletConfig对象 ServletContext对象 1.如何开发一个Servlet 步骤: 1)编写java类,继承自javax.servlet.http.HttpServlet类 2)覆写doGet和doPost方法 3)Servlet程序交给tomcat服务器运行!! 3.1)将S

Servlet编程:(2)Servlet的生命周期

如何开发一个Servlet Servlet的映射路径 Servlet缺省路径 Sevlet的生命周期 Servlet的自动加载 有参的init方法和无参的init方法 Servlet的多线程并发问题 ServletConfig对象 ServletContext对象 4.Servlet的生命周期 4.1.引入 Servlet的生命周期涉及3个问题: servlet类对象什么时候创建,什么时候调用什么方法,什么时候销毁. 以前的对象,其生命周期由程序开发者编写决定,例如: Student stu =