1.重定向

(1)什么是重定向?

服务器通知浏览器向某个地址发送请求。

注:
    服务器可以通过发送302状态码和Location消息头
(Location消息头的值是一个地址,一般称之为重定向地址)给浏览器,
,浏览器收到之后,会立即向重定向地址发送请求。

(2)如何重定向?

response.sendRedirect(String url);

注: 
    url就是重定向地址。
    容器在重定向之前,会先清空response对象上存放的所有数据
    (响应数据包实体内容为空)。

(3)特点

a.重定向地址是任意的。

b.重定向之后,浏览器地址栏的地址会发生变化。

2.Servlet的生命周期

(1)什么是Servlet的生命周期?

servlet容器如何创建servlet对象、如何对其进行初始化处理、 如果调用其方法来处理请求,以及如何销毁该对象的整个过程。

(2)servlet生命周期分成哪几个阶段?

1)实例化

a.什么是实例化?

容器调用Servlet的构造器,创建Servlet对象。

b.什么时候实例化?

情形1(默认): 容器收到请求之后,立即创建。
情形2: 容器启动之后,立即创建(需要做一些配置)。

    <!-- 
    配置启动加载,即容器启动之后,会立即创建该
    Servlet对象。
    注:
        参数值是一个大于等于零的整数,值越小,
        优先级越高(即先被创建)。   
    -->
    <load-on-startup>1</load-on-startup>

c.容器会创建几个实例?

一个!

2)初始化

a.什么是初始化?

容器在创建完servlet对象之后,会立即调用该对象的init方法。
注:
    该方法只会执行一次!

b.GenericServlet已经提供了init方法的实现

将容器传递过来的ServletConfig对象保存下来了,并且
提供了一个getServletConfig方法来获得该对象。

c.如何实现自已的初始化处理逻辑?

override GenericServlet的init()方法即可。

d.初始化参数的使用

step1.配置初始化参数
 <init-param>
    <param-name>company</param-name>
    <param-value>IBM</param-value>
 </init-param>

step2. 读取初始化参数
String company = 
        config.getInitParameter("company");
System.out.println("company:" + company);

3)就绪

4)销毁

(3)生命周期相关的几个接口与类(了解)

a.Servlet接口

init(ServletConfig config)
service()
destroy()

b.GenericServlet抽象类

该类实现了Servlet接口中的部分方法(init,destroy)。

c.HttpServlet抽象类

该类继承了GenericServlet,实现了service方法。

练习

写一个Servlet(DelUserServlet),删除指定用户,返回用户列表。

比如http://localhost:8080/servlet04-lab/del?id=4

提示:

step1. 在UserDAO类中,添加delete方法。

step2. 添加DelUserServlet:
        读取要删除的用户的id,
        调用UserDAO的delete方法,
        重定向到list。