1. 程式人生 > >編寫第一個servlet例子

編寫第一個servlet例子

servlet簡介

簡單來說,servlet就相當於是後臺處理資料的一個東西。比如說表單要提交了 action提交到哪裡去呢?就寫一個比如XX.java 這個裡面寫一個java類(servlet) 這個類用於處理提交過來的資訊。

然後接下來我們瞎bb一會兒:
servlet是jsp的前身,是一個可以通過”請求-響應”程式設計模型來訪問的 在伺服器上執行的小程式。
servlet容器管理context容器,一個context容器對應一個web工程
Servlet(介面):有三個方法 :Init()、service()和destroy();
類的關係
GenericServlet(抽象類,實現servlet介面):是與協議無關的servlet類。
HttpServlet(抽象類):實現了http協議的servlet類。
自定義Servlet(繼承HttpServlet方法):一般重寫(覆蓋)doGet與doPost方法。重寫哪個方法取決於使用者用什麼方式提交請求。

servlet生命週期

  1. init 初始化
  2. 響應客戶請求 service-(doGet或doPost)
  3. 伺服器關閉-終止:destroy(只有伺服器被關閉時才會執行destroy,僅僅終止程式是沒有用的)

一旦servlet例項被裝載,servlet物件會一直儲存在伺服器記憶體當中

Tomcat裝載servlet的三種情況:

  1. 當客戶端首次訪問某個servlet時
  2. servlet容器啟動時可以自動裝載某些servlet(不需要客戶端進行請求)
    需要在web.xml檔案中進行如下配置:
<servlet>
    <loadon-startup>1</loadon-startup
>
//數字越小優先順序越高 </servlet>
  1. servlet類檔案被更新後,也會重新裝載servlet

手動編寫servlet步驟

  1. 繼承HttpServlet
  2. 重寫(覆蓋)doGet與doPost方法.(這取決於使用者用什麼方式提交請求,超連結使用的是get方式,表單可以指定使用post方法)
  3. 在web.xml中註冊servlet
    在新版的eclipse中建立servlet時取消了自動在web.xml中生成servlet 和mapping,取而代之的時在servlet中加入註解@webservlet,在@WebServlet 中定義Servlet的name、urlPatterns等資訊。

雖然已經不需要它了,但還是講講web.xml的配置方法吧

注意不要既配置web.xml又配置@WebServlet,不然可能tomcat會啟動出錯

<welcome-file-list></welcome-file-list>後面加上:

<servlet>
    <servlet-name>TaxiPriceServlet</servlet-name>//servlet的名字
    <servlet-class>Servlet.TaxiPriceServlet</servlet-class>//這裡的類名要寫完整,是帶包名的
</servlet>

<servlet-mapping>
    <servlet-name>TaxiPriceServlet</servlet-name>//和上面的servlet-name相同(對應)
    <url-pattern>/Servlet/TaxiPriceServlet</url-pattern>//對映地址
</servlet-mapping>

實現第一個servlet例子——向頁面輸出內容

  1. 在src中新建一個包。就叫servlet好了。
  2. 右鍵包-新建servlet,然後就會發現它自己生成了很多內容。
  3. 我們現在只需要覆寫一下doGet方法
    因為一般來說自動生成的doPost都會呼叫doGet,像這樣:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

當然覆寫doPost然後用doGet去呼叫它也是可以的,也可以都進行覆寫(兩種提交方式寫不同的程式碼)
4. 呼叫PrintWriter類(需要import java.io.PrintWriter)——實現向瀏覽器輸出東西
doGet和doPost方法要丟擲異常:ServletException, IOException(import java.io.IOException;
import javax.servlet.ServletException;)

response.setContentType("text/html;charset=utf-8");//可以使下面的引號裡支援html程式碼 並向頁面輸出中文 注意這句一定要寫在printwriter前 不然輸出的中文會是問號
PrintWriter out = response.getWriter();

out.println("");

//當然也可以用system.out.println來向後臺輸出東西