天天看點

Servlet生命周期以及Servlet的三種寫法

寫一個Servlet需要的步驟

//1.寫servlet

//2.web.xml 部署servlet

//3.啟動tomcat 通路servlet

//Servlet第一種寫法

public class ServletLife implements Servlet{

    //銷毀Servlet執行個體 釋放記憶體

    //reload 該servlet  2 關閉tomcat 3關機

    @Override

    public void destroy() {

        // TODO Auto-generated method stub

        System.out.println("destroy");

    }

    @Override

    public ServletConfig getServletConfig() {

        // TODO Auto-generated method stub

        return null;

    }

    @Override

    public String getServletInfo() {

        return "";

    }

    //初始化servlet 隻會被調用一次 當使用者第一次通路該servlet被調用

    @Override

    public void init(ServletConfig arg0) throws ServletException {

        // TODO Auto-generated method stub

        System.out.println("init");

    }

    //該函數處理業務邏輯  業務邏輯代碼放在這個方法中 使用者每一次通路該servlet就會調用一次service方法

    //req擷取用戶端的資訊

    //  rsp用于向用戶端傳回資訊

    @Override

    public void service(ServletRequest req, ServletResponse res)

            throws ServletException, IOException {

        // TODO Auto-generated method stub

        System.out.println("service");

        //從res中得到printWriter

        PrintWriter pw = res.getWriter();

        pw.print("Hello World");

    }

}

部署Servlet web.xml

    <servlet>

        <servlet-name>hello</servlet-name>

        <!-- servlet路徑 包名加上類名 -->

        <servlet-class>com.gac.test.ServletLife</servlet-class>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>hello</servlet-name>

        <!-- 浏覽器中的輸入的通路該servlet url -->

        <url-pattern>/gac</url-pattern>

    </servlet-mapping>

Servlet第二種寫法

//第二種servlet 開發 繼承 GenericServlet

public class GenericServletDemo extends GenericServlet{

    //隻需要重寫service 方法即可

    @Override

    public void service(ServletRequest req, ServletResponse rep)

            throws ServletException, IOException {

        // TODO Auto-generated method stub

        PrintWriter pw = rep.getWriter();

        pw.println("Hello world generic");

    }

}

Servlet第三種寫法

/第三種Servlet開發方法 繼承httpServlet

//需要重寫doGet doPost 方法

//表單送出資料get post請求差別

//get送出資料會在位址欄中 顯示安全性低

//get送出資料内容大小小于post 理論上 get 小于2k post 不受限制 建議不要大于64k

//響應速度快 get 伺服器立即處理 post 形成一個隊列請求

public class HttpServletDemo extends HttpServlet{

    //處理get請求

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        // TODO Auto-generated method stub

        //業務邏輯

        PrintWriter pw = resp.getWriter();

        pw.println("Http Servlet");

    }

    //處理post請求

    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        // TODO Auto-generated method stub

        this.doGet(req, resp);

    }

}