什么是servlets?
就象applet擴充了網絡瀏覽器的能力一樣,servlets這個Java部件,擴充了網絡服務器的能力。對于任何種類的服務器端的處理,Servlets可以作為server-side includes使用或者作為CGI程序(在JavaSoft的Java Web server中可以作為插件)執行。 Servlets可以移植,不象CGI和專有的API模塊,你可以利用Java的“編寫一次,到處運行”的機制,在你的企業中配置網絡應用程序。Servlets的運行也很穩固,在 servlet 中你創建了一個數據庫連接,下一次你訪問servlet時連接仍然存在,這同CGI 程序不一樣。Servlets也具有擴展性,所以你可以使用面向對象的程序設計方法,來減少開發時間。Servlets可以運行在任何支持servlet的網絡服務器上。目前,servlet SDK除了支持JavaSoft的Java Web server,還支持Netscape, Apache 和IIS,以及大量第三方的網絡服務器。
JSDK導游
為了創建servlets,你需要Java servlet SDK (JSDK),它可以從JavaSoft網站下載。JSDK包含諸如javax.servlet,javax.servlet.http等包,其中包含有你自己創建servlets時所需要的類和接口。對于sun.servlet 包來說,其中包含了網絡服務器用來運行servlets所需要的類。 (對Servlet的支持通常是通過服務器插件的形式)。一旦你有了JSDK,你只要創建GenericServlet類的子類,并且重載若干方法。GenericServlet 定義了你應該重載的三種主要方法: init(), service()和destroy()。
init() :初始化你的servlet,諸如打開數據庫連接。
destroy():在applet運行結束后,清除servlet 自身。
service():每次調用servlet時,就調用service()方法。有兩個對象 ServletRequest和ServletResponse需要傳送給servlet,用于處理客戶請求。
為了幫助處理基于Web 的事務,JSDK 在 javax.servlet.http包中有個HttpServlet類。HttpServlet是從GenericServlet中派生出來的,它提供了service()的一個實現,該實現用于自動處理GET, HEAD和POST的請求。
HttpServlet類中的方法有doGet()和doPost()。一個典型的CGI servlet只需要實現doGet()和doPost()方法。 doGet()和doPost()的參數為HttpServletRequest和HttpServletResponse。
HttpServletRequest是個接口,該接口提供了從客戶的請求獲取信息的一些方法。例如, getParameter()方法返回在客戶請求中的要害字/值對(或者從請求串中取得,或者從POSTed數據中取得)。
HttpServletResponse提供了輸出流,使得servlet把Html格式的輸出返回給客戶。
基本Servlet代碼
代替你的CGI
下面為一段可以取代CGI程序的基本的servlet代碼。Servlet完成如下的簡單事情:列出由HTML表單搜集的要害字/值對(key/value)。
BasicCGIServlet處理POST,也用同樣處理GET。所以doPost()和doGet()都調用doService()。doService()可以在子類中重載,以實現更多特定的功能。
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class BasicCGIServlet extends HttpServlet {
public BasicCGIServlet () {
super();
}
public void doPost (HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doService(req, resp);
}
public void doGet (HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doService(req, resp);
}
PRotected synchronized void doService (HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
// get an output stream to write to
新聞熱點
疑難解答