一、servlet生命週期和三種實現方式,get和post請求區別

1,servlet生命週期

  • 當servlet第一次調用的時候會觸發init函數,該函數之調用一次把servlet實例裝載到內存。
  • 然後去調動servlet的service函數
  • 第二次訪問servlet的時候直接調用service函數。
  • 當web應用reload 或者tomcat關閉或者關機的時候都會調用servlet的destory函數,該函數銷燬servlet。

2,開發servlet的三種方式

(1)實現servlet接口
(2)通過繼承GenericServlet
(3)通過繼承HttpServlet

下面介紹三種實現方式:

※ 第一種:實現servlet接口

1,新建MyServelet類

public class MyServelet implements Servlet {

    // 這個函數用於初始化servlet(類似類構造函數),該函數只會調用一次(當用戶第一次訪問servlet時被調用)
    @Override
    public void init(ServletConfig arg0) throws ServletException {
        System.out.println("init servlet");
    }

    // 得到servletConfig對象
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    // 得到servlet的配置信息
    @Override
    public String getServletInfo() {
        return null;
    }

    // 這個函數用於處理業務邏輯,當用戶每訪問該servlet時都會被調用。
    // ServletRequest:用於獲取客戶端瀏覽器的信息。
    // ServletResponse:用戶向客戶端(瀏覽器)返回信息。
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        PrintWriter printWriter = res.getWriter();
        printWriter.write("hello word");
        System.out.println("service callback");
    }

    // 釋放servlet實例(釋放內存)
    // 觸發方式1,reload servelt 2,關閉tomcat 3,關機
    @Override
    public void destroy() {
        System.out.println("destory servlet");
    }

}

2,新建web.xml 並配置映射路徑

<servlet>
        <!-- 給你的servlet任意取名 -->
        <servlet-name>MyServelet</servlet-name>
        <!-- 指明servlet的路徑 包名+路徑 -->
        <servlet-class>com.hiveview.test.MyServelet</servlet-class>

    </servlet>
    <servlet-mapping>
        <!-- 給你的servlet任意取名 -->
        <servlet-name>MyServelet</servlet-name>
        <!-- 在瀏覽器上輸入訪問該servlet的url 任意的 -->
        <url-pattern>/hiveview</url-pattern>
    </servlet-mapping>

3,啓動tomcat服務器在瀏覽器上輸入訪問地址:
http://localhost:8080/test/hiveview

※ 第二種實現方式 (繼承GenericServlet)

1,新建MyGenericServlet類

/**
 * 這是第二種開發servlet的方法(繼承GenericServlet)
 *
 */
public class MyGenericServlet extends GenericServlet {

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        PrintWriter printWriter = res.getWriter();
        printWriter.write("hello word");
    }

}

2,在web.xlm配置servlet映射關係

<servlet>
        <!-- 給你的servlet任意取名 -->
        <servlet-name>MyGenericServlet</servlet-name>
        <!-- 指明servlet的路徑 包名+路徑 -->
        <servlet-class>com.hiveview.test.MyGenericServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <!-- 給你的servlet任意取名 -->
        <servlet-name>MyGenericServlet</servlet-name>
        <!-- 在瀏覽器上輸入訪問該servlet的url 任意的 -->
        <url-pattern>/MyGenericServlet</url-pattern>
    </servlet-mapping>
    <servlet>

3,啓動tomcat服務器在瀏覽器輸入訪問路徑:
http://localhost:8080/test/MyGenericServlet

※ 第三種實現方式(繼承HttpServlet)

1,新建類 MyHttpServlet

/**
 * 這是第三種開發servlet方法(通過繼承httpServlet)
 * 
 */
public class MyHttpServlet extends HttpServlet {
    // 處理get請求
    // req:用於獲得客戶端(瀏覽器)的信息
    // res:用戶向客戶端(瀏覽器)返回信息
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    // 處理post請求
    // req:用於獲得客戶端(瀏覽器)的信息
    // res:用戶向客戶端(瀏覽器)返回信息
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.write("hello word");
    }

}

2,在web.xml配置映射信息

<servlet>
        <!-- 給你的servlet任意取名 -->
        <servlet-name>MyHttpServlet</servlet-name>
        <!-- 指明servlet的路徑 包名+路徑 -->
        <servlet-class>com.hiveview.test.MyHttpServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <!-- 給你的servlet任意取名 -->
        <servlet-name>MyHttpServlet</servlet-name>
        <!-- 在瀏覽器上輸入訪問該servlet的url 任意的 -->
        <url-pattern>/MyHttpServlet</url-pattern>
    </servlet-mapping>

3,啓動tomcat服務器在瀏覽器輸入訪問地址:
http://localhost:8080/test/MyHttpServlet

項目下載地址:http://download.csdn.net/detail/tianyejun6/9724871


3,get提交和post提交區別

  1. get安全性小於post因爲get會把訪問信息暴露在瀏覽器地址欄。
  2. get提交內容信息一般不要大於2k,post提交內容一般不要大於64k。
  3. 訪問速度get大於post。
  4. get可以保留uri中的參數便於保留。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章