淺析Servlet基本結(jié)構(gòu)
下面的代碼顯示了一個(gè)簡(jiǎn)單Servlet基本結(jié)構(gòu)。該Servlet處理的是GET請(qǐng)求,所謂的GET請(qǐng)求,如果你不熟悉HTTP,可以把它看成是當(dāng)用戶在瀏覽器地址欄輸入U(xiǎn)RL、點(diǎn)擊Web頁(yè)面中的鏈接、提交沒(méi)有指定METHOD的表單時(shí)瀏覽器所發(fā)出的請(qǐng)求。Servlet也可以很方便地處理POST請(qǐng)求。POST請(qǐng)求是提交那些指定了METHOD=“POST”的表單時(shí)所發(fā)出的請(qǐng)求。
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class SomeServlet extends HttpServlet {
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws ServletException, IOException {
- // 使用“request”讀取和請(qǐng)求有關(guān)的信息(比如Cookies)
- // 和表單數(shù)據(jù)
- // 使用“response”指定HTTP應(yīng)答狀態(tài)代碼和應(yīng)答頭
- // (比如指定內(nèi)容類型,設(shè)置Cookie)
- PrintWriter out = response.getWriter();
- // 使用 "out"把應(yīng)答內(nèi)容發(fā)送到瀏覽器
- }
- }
Servlet基本結(jié)構(gòu),如果某個(gè)類要成為Servlet,則它應(yīng)該從HttpServlet 繼承,根據(jù)數(shù)據(jù)是通過(guò)GET還是POST發(fā)送,覆蓋doGet、doPost方法之一或全部。doGet和doPost方法都有兩個(gè)參數(shù),分別為HttpServletRequest 類型和HttpServletResponse 類型。HttpServletRequest提供訪問(wèn)有關(guān)請(qǐng)求的信息的方法,例如表單數(shù)據(jù)、HTTP請(qǐng)求頭等等。HttpServletResponse除了提供用于指定HTTP應(yīng)答狀態(tài)(200,404等)、應(yīng)答頭(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一個(gè)用于向客戶端發(fā)送數(shù)據(jù)的PrintWriter 。對(duì)于簡(jiǎn)單的Servlet來(lái)說(shuō),它的大部分工作是通過(guò)println語(yǔ)句生成向客戶端發(fā)送的頁(yè)面。
注意doGet和doPost拋出兩個(gè)異常,因此你必須在聲明中包含它們。另外,你還必須導(dǎo)入java.io包(要用到PrintWriter等類)、javax.servlet包(要用到HttpServlet等類)以及javax.servlet.http包(要用到HttpServletRequest類和HttpServletResponse類)。
***,doGet和doPost這兩個(gè)方法是由service方法調(diào)用的,有時(shí)你可能需要直接覆蓋service方法。以上是Servlet基本結(jié)構(gòu)
【編輯推薦】