Servlet源代码学习笔记-1
一。关键类介绍:
1。servlet通用类:
public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable
??? //servlet容器会调用该方法,来完成servlet的初始化
??? //config参数是,servlet容器传进来的servlet相关的配置参数信息
??? public void init(ServletConfig config) throws ServletException {
??????? this.config = config;
??????? this.init();
??? }
??? //一般我们定义的子类会覆盖该方法
??? public void init() throws ServletException {
?????
??? }
?
?
??? //从config中取得servlet名,web.xml中的<servlet-name>
??? public String getServletName()
??? //从config中取得ServletContext
??? public ServletContext getServletContext()
??? //从config中取得servlet的初始化参数,web.xml中的<init-param>
??? public String getInitParameter(String name)
?
?? //servlet容器会调用该方法,来完成servlet的销毁,一般我们定义的子类会覆盖该方法
?? public void destroy() {
???}
?
?? //抽象方法,servlet容器接收到一个request的时候,会调用该方法,来对request进行应答
?? public abstract void service(ServletRequest req, ServletResponse res)
????? throws ServletException, IOException;
?
我们可以通过继承javax.servlet.GenericServlet来定义自己的servlet,但是必须覆盖service方法。
?
2。HttpServlet类
public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
?
覆盖了父类的抽象方法
public void service(ServletRequest req, ServletResponse res)
{
????? //调用下面的protected void service方法
}
?
根据request方式,来调用doXXX方法,如doGet,doPost
protected void service(HttpServletRequest req, HttpServletResponse resp)
?
?
get/post请求方式的时候,调用该方法来对request进行应答,子类必须覆盖该方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
一般我们会通过继承javax.servlet.http.HttpServlet来定义自己的servlet,但必须覆盖doGet/doPost方法