# 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)就绪
a.什么是就绪?
容器收到请求之后,会调用Servlet对象的service方法。
b.HttpServlet已经提供了service方法的实现:
依据请求类型,调用对应的doXXX方法。
比如,get请求调用doGet方法,post请求调用doPost方法。
这些doXXX方法,只是抛出了一个异常。
### 4)销毁
容器在删除Servlet对象之前,会调用该对象的destroy方法。
注:
该方法只会执行一次!
b.GenericServlet已经提供了destroy方法的基本实现。
可以override destroy方法来实现自己的销毁处理逻辑。
## (3)生命周期相关的几个接口与类(了解)
a.Servlet接口
init(ServletConfig config)
service()
destroy()
b.GenericServlet抽象类
该类实现了Servlet接口中的部分方法(init,destroy)。
c.HttpServlet抽象类
该类继承了GenericServlet,实现了service方法。