国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

用Java Servlets代替CGI

2019-11-18 12:32:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  從網(wǎng)絡(luò)的早期階段開(kāi)始,人們就希望他們的網(wǎng)絡(luò)服務(wù)器不僅能夠顯示靜態(tài)文檔,通用網(wǎng)關(guān)接口(CGI) 擴(kuò)展了服務(wù)器的能力,但其代價(jià)是增加了額外的處理進(jìn)程。FastCGI則把外部CGI 處理進(jìn)程同網(wǎng)絡(luò)服務(wù)器更緊密地集成在一起,另外,對(duì)于專有的,諸如NSAPI 和ISAPI 這樣的服務(wù)器API,它們直接把外部進(jìn)程以服務(wù)器插件的形式集成到服務(wù)器中。現(xiàn)在有了java servlets,它們的功能強(qiáng)大,可以快速替代你現(xiàn)有的CGI程序。

什么是servlets?

就象applet擴(kuò)充了網(wǎng)絡(luò)瀏覽器的能力一樣,servlets這個(gè)Java部件,擴(kuò)充了網(wǎng)絡(luò)服務(wù)器的能力。對(duì)于任何種類的服務(wù)器端的處理,Servlets可以作為server-side includes使用或者作為CGI程序(在JavaSoft的Java Web server中可以作為插件)執(zhí)行。 Servlets可以移植,不象CGI和專有的API模塊,你可以利用Java的“編寫(xiě)一次,到處運(yùn)行”的機(jī)制,在你的企業(yè)中配置網(wǎng)絡(luò)應(yīng)用程序。Servlets的運(yùn)行也很穩(wěn)固,在 servlet 中你創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)連接,下一次你訪問(wèn)servlet時(shí)連接仍然存在,這同CGI 程序不一樣。Servlets也具有擴(kuò)展性,所以你可以使用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,來(lái)減少開(kāi)發(fā)時(shí)間。Servlets可以運(yùn)行在任何支持servlet的網(wǎng)絡(luò)服務(wù)器上。目前,servlet SDK除了支持JavaSoft的Java Web server,還支持Netscape, Apache 和IIS,以及大量第三方的網(wǎng)絡(luò)服務(wù)器。

JSDK導(dǎo)游

為了創(chuàng)建servlets,你需要Java servlet SDK (JSDK),它可以從JavaSoft網(wǎng)站下載。JSDK包含諸如javax.servlet,javax.servlet.http等包,其中包含有你自己創(chuàng)建servlets時(shí)所需要的類和接口。對(duì)于sun.servlet 包來(lái)說(shuō),其中包含了網(wǎng)絡(luò)服務(wù)器用來(lái)運(yùn)行servlets所需要的類。 (對(duì)Servlet的支持通常是通過(guò)服務(wù)器插件的形式)。一旦你有了JSDK,你只要?jiǎng)?chuàng)建GenericServlet類的子類,并且重載若干方法。GenericServlet 定義了你應(yīng)該重載的三種主要方法: init(), service()和destroy()。

init() :初始化你的servlet,諸如打開(kāi)數(shù)據(jù)庫(kù)連接。

destroy():在applet運(yùn)行結(jié)束后,清除servlet 自身。

service():每次調(diào)用servlet時(shí),就調(diào)用service()方法。有兩個(gè)對(duì)象 ServletRequest和ServletResponse需要傳送給servlet,用于處理客戶請(qǐng)求。

為了幫助處理基于Web 的事務(wù),JSDK 在 javax.servlet.http包中有個(gè)HttpServlet類。HttpServlet是從GenericServlet中派生出來(lái)的,它提供了service()的一個(gè)實(shí)現(xiàn),該實(shí)現(xiàn)用于自動(dòng)處理GET, HEAD和POST的請(qǐng)求。

HttpServlet類中的方法有doGet()和doPost()。一個(gè)典型的CGI servlet只需要實(shí)現(xiàn)doGet()和doPost()方法。 doGet()和doPost()的參數(shù)為HttpServletRequest和HttpServletResponse。

HttpServletRequest是個(gè)接口,該接口提供了從客戶的請(qǐng)求獲取信息的一些方法。例如, getParameter()方法返回在客戶請(qǐng)求中的要害字/值對(duì)(或者從請(qǐng)求串中取得,或者從POSTed數(shù)據(jù)中取得)。

HttpServletResponse提供了輸出流,使得servlet把Html格式的輸出返回給客戶。

基本Servlet代碼

代替你的CGI

下面為一段可以取代CGI程序的基本的servlet代碼。Servlet完成如下的簡(jiǎn)單事情:列出由HTML表單搜集的要害字/值對(duì)(key/value)。

BasicCGIServlet處理POST,也用同樣處理GET。所以doPost()和doGet()都調(diào)用doService()。doService()可以在子類中重載,以實(shí)現(xiàn)更多特定的功能。

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



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜川县| 湾仔区| 湘乡市| 庆安县| 涞源县| 长兴县| 平和县| 聂荣县| 石首市| 霍州市| 中宁县| 乌什县| 合水县| 平果县| 井陉县| 赤壁市| 青神县| 凤山市| 成都市| 阳曲县| 宁强县| 云浮市| 体育| 肥乡县| 娄烦县| 安多县| 都江堰市| 濮阳县| 罗甸县| 望江县| 大埔县| 平山县| 甘孜县| 怀宁县| 兴业县| 山阴县| 涟源市| 乐亭县| 建水县| 信丰县| 徐闻县|