Servelt定义:
servlet是一种应用于服务器端的Java程序,可以生成动态的web页面。
servlet运行在服务器端,是由web服务器负责加载的,是独立于平台和协议的
Java应用程序。
3.1 Servlet**的意义和生命周期**
Servlet其实并不是很复杂的东西,事实上,servlet就是一个java接口,定义了处理网络请求的规范。所有实现servlet的类,都需要实现它那五个方法,其中最主要的是三个生命周期方法 init()和destroy()service(),所有实现
servlet接口的类都需要回答这三个问题:
?你销毁时要做什么
?你接受到请求时要做什么
package javax.servlet;
import java.io.IOException;
public interface Servlet {
void init(ServletConfig var1) throws ServletException;
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
String getServletInfo();
void destroy();
}
Servlet接口源码如下:
一共有三个生命周期方法,init(),service(),destroy()
init()方法:在servlet被创建时调用
service()方法:servlet接收到前端发送过来的HTTP请求时调用
destory()方法:servlet销毁时被调用
3.2 Servlet**生命周期详解**
当我们第一次接触Servlet和WEB服务器时,我们一定会有这个疑问:为什
么我们都不用使用new关键字来实例化Servlet就能够使用了呢?
这是因为,在我们第一次访问到servlet的时候,servlet容器会根据
web.xml文件里注册的servlet信息,为我们创建一个servlet实例,调用
servlet的init方法,这个实例会常驻内存,当我们每次访问servlet配置的
mapping地址时,就会调用该实例的service方法来处理请求,当web服务
器关闭时,会调用servlet的destroy方法来销毁servlet实例。
}3.3 创建**Servlet的三种方法:**
\1. 实现servlet接口,重写接口中的init(),service(),destroy()等方法
\2. 继承GenericServlet,重写父类中的service()方法
\3. 继承HttpServlet,重写父类中的doGet()和doPost()方法
GenericServlet是一个抽象类,实现了servlet接口
HttpServlet是一个普通类,继承自GenericServlet
为什么会有三种方式?
因为Servlet技术是不断发展的,先有Servlet,再有GenericServlet,最后
才有的HttpServlet。HttpServlet封装了更多的内容,实现了更强大的功
能,所以在接下来的学习中我们都使用HttpServlet来实现。
3.4 Servlet**技术总结**
其实Servlet本身在Web容器中是“非常被动”的一个角色,处理的事情也很
简单。网络请求与响应,不是他的主要职责,它其实更偏向于业务代码。
所谓的Request和Response是Web容器来进行处理,servlet并不会参与处
理Request和Response的过程。*