1. Servlet接口
作為J2EE最基礎(chǔ)的一個接口之一刁愿,定義如下
public interface Servlet {
/** 當(dāng)該Servlet被Servlet容器初始化后偎巢,容器隨即調(diào)用該方法 */
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
/** 請求調(diào)度到該Servlet時炫彩,執(zhí)行該方法 */
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;
public String getServletInfo();
/** 容器銷毀時吩蔑,調(diào)用該方法進(jìn)行銷毀Servlet實例 */
public void destroy();
}
servlet調(diào)度過程
2. HttpServlet抽象類
在進(jìn)行J2EE開發(fā)時卒蘸,我們可以直接使用抽象類:HttpServlet快速實現(xiàn)Servlet開發(fā)体谒。如下杯聚,我們只需要實現(xiàn)兩個方法,并且利用Servlet3.x通過注解的配置方式抒痒,不該Servlet注冊到容器中幌绍。以便接收并響應(yīng)請求。在HttpServlet中說到底還是通過間接的實現(xiàn)了Servlet接口
@WebServlet(urlPatterns = "/hello") // Servlet3.x注解式配置
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost");
}
}
3. Servlet的生命周期
在容器接收到來自客戶端的請求時故响,會在urlPattern中尋找匹配的Servlet來響應(yīng)請求傀广。
- 當(dāng)找到的Servlet還未實例化時(請求第一次落到該Servlet上),容器實例化Servlet彩届,調(diào)用init方法伪冰,之后調(diào)用service方法
- 如果該Servlet在之前已經(jīng)執(zhí)行過實例化(請求再次落到該Servlet時),容器直接調(diào)用service方法進(jìn)行響應(yīng)