明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

動(dòng)態(tài)頁(yè)面技術(shù)說(shuō)明—ASP、JSP、CGI、PHP

[摘要]Active Server Pages即ASP是微軟開發(fā)的一種類似HTML(Hypertext Markup Language超文本標(biāo)識(shí)語(yǔ)言)、Script(腳本)與CGI(Common GAteway Interface 通用網(wǎng)關(guān)接口)的結(jié)合體,它沒(méi)有提供自己專門的編程語(yǔ)言,而是允許用戶使用包括...

Active Server Pages即ASP是微軟開發(fā)的一種類似HTML(Hypertext Markup Language超文本標(biāo)識(shí)語(yǔ)言)、Script(腳本)與CGI(Common GAteway Interface 通用網(wǎng)關(guān)接口)的結(jié)合體,它沒(méi)有提供自己專門的編程語(yǔ)言,而是允許用戶使用包括VBSCRIPT,javascript等在內(nèi)的許多已有的腳本語(yǔ)言編寫ASP的應(yīng)用程序。ASP的程序編制比HTML更方便且更有靈活性。它是在WEB服務(wù)器端運(yùn)行,運(yùn)行后再將運(yùn)行結(jié)果以HTML格式傳送至客戶端的瀏覽器。因此ASP與一般的腳本語(yǔ)言相比,要安全的多。
對(duì)于廣大網(wǎng)頁(yè)技術(shù)愛(ài)好者來(lái)說(shuō),ASP比CGI具有的最大好處是可以包含HTML標(biāo)簽,也可以直接存取數(shù)據(jù)庫(kù)及使用無(wú)限擴(kuò)充的ActiveX控件,因此在程序編制上要比HTML方便而且更富有靈活性。

ASP吸收了當(dāng)今許多流行的技術(shù),如IIS,ACTIVEX,VBSCRIPT,ODBC等,是一種發(fā)展較為成熟的網(wǎng)絡(luò)應(yīng)用程序開發(fā)技術(shù);其核心技術(shù)是對(duì)組件和對(duì)象技術(shù)的充分支持。通過(guò)使用ASP的組件和對(duì)象技術(shù),用戶可以直接使用ActiveX控件,調(diào)用對(duì)象方法和屬性,以簡(jiǎn)單的方式實(shí)現(xiàn)強(qiáng)大的功能?梢栽诖苏业礁敿(xì)的信息:http://www.activeserverpages.com。 

ASP中最為常用的內(nèi)置對(duì)象和組件如下:

Request對(duì)象:用來(lái)連接客戶端的Web頁(yè)(.htm文件)和服務(wù)器的Web頁(yè)(.asp文件),可以獲取客戶端數(shù)據(jù),也可以交換兩者之間的數(shù)據(jù)。

Response對(duì)象:用于將服務(wù)端數(shù)據(jù)發(fā)送到客戶端,可通過(guò)在客戶端瀏覽器顯示,用戶瀏覽頁(yè)面的重定向以及在客戶端創(chuàng)建cookies等方式進(jìn)行。該功能與Request對(duì)象的功能恰恰相反。

  Server對(duì)象:許多高級(jí)功能都靠它來(lái)完成;它可以創(chuàng)建各種Server對(duì)象的實(shí)例以簡(jiǎn)化用戶的操作。
  Application對(duì)象:它是個(gè)應(yīng)用程序級(jí)的對(duì)象,用來(lái)在所有用戶間共享信息,并可以Web應(yīng)用程序運(yùn)行期間持久地保持?jǐn)?shù)據(jù)。同時(shí)如果不加以限制,所有客戶都可以訪問(wèn)這個(gè)對(duì)象。
  Session對(duì)象:它為每個(gè)訪問(wèn)者提供一個(gè)標(biāo)識(shí);Session可以用來(lái)存儲(chǔ)訪問(wèn)者的一些喜好,可以跟蹤訪問(wèn)者的的習(xí)慣。在購(gòu)物網(wǎng)站中,Session常用于創(chuàng)建購(gòu)物車(Shopping Cart)。
  Browser Capabilities(瀏覽器性能組件):可以確切的描述用戶使用的瀏覽器類型、版本以及瀏覽器支持的插件功能。使用此組件能正確地裁剪出自己的ASP文件輸出,使得ASP文件適合于用戶的瀏覽器,并可以根據(jù)檢測(cè)出的瀏覽器的類型來(lái)顯示不同的主頁(yè)。
  FileSystem Objects(文件訪問(wèn)組件):允許你訪問(wèn)文件系統(tǒng),處理文件。
  ADO(數(shù)據(jù)庫(kù)訪問(wèn)組件):它是最有用的組件;可以通過(guò)ODBC實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。
  Ad Rotator(廣告輪顯組件):專門為出租廣告空間的站點(diǎn)設(shè)計(jì)的,可以動(dòng)態(tài)的隨機(jī)顯示多個(gè)預(yù)先設(shè)定的BANNER廣告條。


以下是ASP通過(guò)ADO組件調(diào)用數(shù)據(jù)庫(kù)并輸出的例子:


<%@ LANGUAGE="VBSCRIPT"%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=gb2312">
<TITLE>使用ADO的例子</TITLE>
</HEAD>
<BODY>
<P align="center">所查詢的書名為:<br>
<%
Dim dataconn
Dim datardset
Set dataconn=Sever.CreateObject("ADODB.Connection")
Set datardset=Sever.CreateObject("ADODB.Recordset")
dataconn.Open "library","sa","" "數(shù)據(jù)庫(kù)為library
datardset.Open "SELECT name FROM book",dataconn "查詢表book
%>
<%
Do While Not datardset.EOF
%>
<%=datardset("name") %><br>
<%
datardset.MoveNext
Loop
%>
</P>
</BODY>
</HTML>

  ASP技術(shù)有一個(gè)缺陷:它基本上是局限于微軟的操作系統(tǒng)平臺(tái)之上。ASP主要工作環(huán)境是微軟的IIS應(yīng)用程序結(jié)構(gòu),又因Activex對(duì)象具有平臺(tái)特性,所以ASP技術(shù)不能很容易地實(shí)現(xiàn)在跨平臺(tái)的WEB服務(wù)器的工作。 
------------------------------------------------------------------------------

JSP(Java Server Pages)是由Sun Microsystem公司于1999/6推出的新技術(shù),是基于Java Servlet以及整個(gè)java體系的Web開發(fā)技術(shù)。利用這一技術(shù)可以建立先進(jìn)、安全和跨平臺(tái)的動(dòng)態(tài)網(wǎng)站。
總的來(lái)講,Java Sever Pages(JSP)和 微軟的Active Sever Pages(ASP)在技術(shù)方面有許多相似之處。兩者都是為基于WEB應(yīng)用實(shí)現(xiàn)動(dòng)態(tài)交互網(wǎng)頁(yè)制作提供的技術(shù)環(huán)境支持。同等程度上來(lái)講,兩者都能夠?yàn)槌绦蜷_發(fā)人員提供實(shí)現(xiàn)應(yīng)用程序的編制與自帶組件設(shè)計(jì)網(wǎng)頁(yè)從邏輯上分離的技術(shù)。而且兩者都能夠替代CGI使網(wǎng)站建設(shè)與發(fā)展變的較為簡(jiǎn)單與快捷。不過(guò)兩者是來(lái)源于不同的技術(shù)規(guī)范組織,其實(shí)現(xiàn)的基礎(chǔ):WEB服務(wù)器平臺(tái)要求不相同。 ASP一般只應(yīng)用于Windows NT/2000平臺(tái),而JSP則可以不加修改地在85%以上的Web Server上運(yùn)行,其中包括了NT的系統(tǒng),符合"write once,run anywhere"("一次編寫,多平臺(tái)運(yùn)行")的java標(biāo)準(zhǔn),實(shí)現(xiàn)平臺(tái)和服務(wù)器的獨(dú)立性,而且基于JSP技術(shù)的應(yīng)用程序比基于ASP的應(yīng)用程序易于維護(hù)和管理。 


將內(nèi)容的生成和顯示進(jìn)行分離 
使用JSP技術(shù),Web頁(yè)面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容(內(nèi)容是根據(jù)請(qǐng)求來(lái)變化的,例如請(qǐng)求帳戶信息或者特定的一瓶酒的價(jià)格)。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Beans中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。 

在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過(guò)訪問(wèn)JavaBeans組件,使用JDBCTM技術(shù)訪問(wèn)數(shù)據(jù)庫(kù),或者包含文件),并且將結(jié)果以HTML(或者XML)頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。

強(qiáng)調(diào)可重用的組件 

  絕大多數(shù)JSP頁(yè)面依賴于可重用的,跨平臺(tái)的組件(JavaBeans或者Enterprise JavaBeansTM)組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團(tuán)體所使用。基于組件的方法加速了總體開發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。 

采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開發(fā) 
Web頁(yè)面開發(fā)人員不會(huì)都是熟悉腳本語(yǔ)言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時(shí)的功能。

JSP的適應(yīng)平臺(tái)更廣 
這是JSP比ASP的優(yōu)越之處。幾乎所有平臺(tái)都支持Java,JSP+JavaBean可以在所有平臺(tái)下通行無(wú)阻。NT下IIS通過(guò)一個(gè)插件,例如JRUN(http: //www3.allaire.com/products/jrun/)或者ServletExec(http://www.newatlanta.com/),就能支持JSP。著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在NT、Unix和Linux上,因此JSP有更廣泛的運(yùn)行平臺(tái)。雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場(chǎng)份額,但是在服務(wù)器方面Unix的優(yōu)勢(shì)仍然很大,而新崛起的Linux更是來(lái)勢(shì)不小。從一個(gè)平臺(tái)移植到另外一個(gè)平臺(tái),JSP和JavaBean甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的、與平臺(tái)無(wú)關(guān)的。 

Java中連接數(shù)據(jù)庫(kù)的技術(shù)是JDBC(Java Database Connectivity)。很多數(shù)據(jù)庫(kù)系統(tǒng)帶有JDBC驅(qū)動(dòng)程序,Java程序就通過(guò)JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)相連,執(zhí)行查詢、提取數(shù)據(jù)等等操作。Sun公司還開發(fā)了JDBC-ODBC bridge,用此技術(shù)Java程序就可以訪問(wèn)帶有ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù),目前大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)都帶有ODBC驅(qū)動(dòng)程序,所以Java程序能訪問(wèn)諸如Oracle、Sybase、MS SQL Server和MS Access等數(shù)據(jù)庫(kù)。
---------------------------------------------------------------------------

CGI--Common Gateway Interface,公用網(wǎng)關(guān)接口。它可以稱之為一種機(jī)制。因此您可以使用不同的程序編寫適合的CGI程序,如Visual Basic、Delphi或C/C++等,您將已經(jīng)寫好的程序放在WEB服務(wù)器的計(jì)算機(jī)上運(yùn)行,再將其運(yùn)行結(jié)果通過(guò)WEB服務(wù)器傳輸?shù)娇蛻舳说臑g覽器上。我們通過(guò)CGI建立WEB頁(yè)面與腳本程序之間的聯(lián)系,并且可以利用腳本程序來(lái)處理訪問(wèn)者輸入的信息并據(jù)此作出響應(yīng)。事實(shí)上,這樣的編制方式比較困難而且效率低下,因?yàn)槟忝恳淮涡薷某绦蚨急仨氈匦聦GI程序編譯成可執(zhí)行文件。
最常用于編寫CGI技術(shù)的語(yǔ)言是Perl(Practical Extraction and Report Language,文字分析報(bào)告語(yǔ)言),它具有強(qiáng)大的字符串處理能力,特別適合用于分割處理客戶端form提交的數(shù)據(jù)串;用它來(lái)編寫的程序后綴為.pl。

我們來(lái)看個(gè)簡(jiǎn)單的例子hello.pl:

#!/usr/bin/perl 
$Hello="Hello,CGI"; #字符串變量;
$Time=2;
print $Hello," for the",$Time,"nd time!","\n"; #輸出一句話;
# End hello.pl
輸出結(jié)果:
Hello,CGI for the 2nd time!
[page_break]程序中第一個(gè)注釋行具有特殊的含義,它是UNIX系統(tǒng)中shell的一條指令,表示在命令行上運(yùn)行其后的命令。第一行是必需的,/usr/bin/perl提供了Perl解釋器的完整路徑名。例中的井號(hào)(#)為Perl語(yǔ)言中的注釋字符。P erl技術(shù)參考站點(diǎn):http://www.perl.com。 

CGI調(diào)用數(shù)據(jù)庫(kù)需要安裝DBI----DataBase Interface,即數(shù)據(jù)庫(kù)接口技術(shù)。DBI提供了基于Perl的標(biāo)準(zhǔn)界面連接到各種不同的SQL引擎上。各種數(shù)據(jù)庫(kù)的DBI模塊可在此找到:http://www.perl.com/CPAN-local/modules/by-module/DBI/。以下是連接ORACLE數(shù)據(jù)庫(kù)的一個(gè)例子: 

use DBI; #調(diào)用DBI; 
#以下三項(xiàng)是數(shù)據(jù)庫(kù)名,調(diào)用數(shù)據(jù)庫(kù)的用戶名,密碼;
$dbname="dbi:Oracle:DBName";
$user="user";
$pass="pass"; 
#聯(lián)系數(shù)據(jù)庫(kù);
$dbh=DBI->connect($dbname,$user,$pss)   die "Error Connecting to database \n"; #數(shù)據(jù)庫(kù)查詢;
$tag=$dbh->prepare("SELECT * FROM 表名");
$tag->execute; #執(zhí)行查詢;
die "Error:$DBI::err\n" if DBI::err; #出錯(cuò)判斷;
my($col1,$col2); #定義只在本程序中(用my來(lái)表示)有效的兩個(gè)變量;
while(($col1,$col2)=$tag->fetchrow) {
print "Column 1:$col1\n";
print "Column 2:$col2\n";
}
$dbh->disconnect or warn "Disconnection failed \n"; #斷開與數(shù)據(jù)庫(kù)的連接;  CGI技術(shù)已經(jīng)發(fā)展的很成熟了,功能強(qiáng)大,例如SINA,NETEASE,SOHU等網(wǎng)站的搜索引擎,用的就是CGI技術(shù)。
---------------------------------------------------------------------------

PHP--Hypertext Preprocessor(超文本預(yù)處理器),是一種易于學(xué)習(xí)和使用的服務(wù)器端腳本語(yǔ)言,是生成動(dòng)態(tài)網(wǎng)頁(yè)的工具之一。它是嵌入HTML文件的一種腳本語(yǔ)言。其語(yǔ)法大部分是從C,JAVA,PERL語(yǔ)言中借來(lái),并形成了自己的獨(dú)有風(fēng)格;目標(biāo)是讓W(xué)EB程序員快速的開發(fā)出動(dòng)態(tài)的網(wǎng)頁(yè)。它是當(dāng)今INTERNET上最為火熱的腳本語(yǔ)言,只需要很少的編程知識(shí)你就能使用PHP建立一個(gè)真正交互的WEB站點(diǎn)。
PHP是完全免費(fèi)的,可以不受限制的獲得源碼,甚至可以從中加進(jìn)你自己需要的特色。PHP在大多數(shù)Unix平臺(tái),GUN/Linux和微軟Windows平臺(tái)上均可以運(yùn)行。PHP的官方網(wǎng)站是:http://www.php.net。 

與ASP、JSP一樣,PHP也可以結(jié)合HTML語(yǔ)言共同使用;它與HTML語(yǔ)言具有非常好的兼容性,使用者可以直接在腳本代碼中加入HTML標(biāo)簽,或者在HTML標(biāo)簽中加入腳本代碼從而更好的實(shí)現(xiàn)頁(yè)面控制,提供更加豐富的功能。

PHP的優(yōu)點(diǎn)有:安裝方便學(xué)習(xí)過(guò)程簡(jiǎn)單;數(shù)據(jù)庫(kù)連接方便,兼容性強(qiáng);擴(kuò)展性強(qiáng);可以進(jìn)行面向?qū)ο缶幊獭R肗issan的Xterra的話來(lái)說(shuō)就是PHP可以做到你想讓它做到的一切而且無(wú)所不能! 

PHP提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)接口,幾乎可以連接所有的數(shù)據(jù)庫(kù);尤其和MYSQL數(shù)據(jù)庫(kù)的配合更是“天衣無(wú)縫”。下面引用一個(gè)調(diào)用MYSQL數(shù)據(jù)庫(kù)并分頁(yè)顯示的例子來(lái)加深對(duì)PHP的了解。

<?
$pagesize = 5; //每頁(yè)顯示5條記錄
$host="localhost";
$user="user";
$password="psw"; 
$dbname="book"; //所查詢的庫(kù)表名;
//連接MySQL數(shù)據(jù)庫(kù)
mysql_connect("$host","$user","$password") or die("無(wú)法連接MySQL數(shù)據(jù)庫(kù)服務(wù)器!"); $db = mysql_select_db("$dbname") or die("無(wú)法連接數(shù)據(jù)庫(kù)!");$sql = "select count(*) as total from pagetest";//生成查詢記錄數(shù)的SQL語(yǔ)句
$rst = mysql_query($sql) or die("無(wú)法執(zhí)行SQL語(yǔ)句:$sql !"); //查詢記錄數(shù)
$row = mysql_fetch_array($rst) or die("沒(méi)有更多的記錄!"); /取出一條記錄
$rowcount = $row["total"];//取出記錄數(shù)
mysql_free_result($rst) or die("無(wú)法釋放result資源!"); //釋放result資源$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出總共有幾頁(yè)if(!isset($pageno)) {
$pageno = 1; //在沒(méi)有設(shè)置pageno時(shí),缺省為顯示第1頁(yè)
}
if($pageno<1) {
$pageno = 1; //若pageno比1小,則把它設(shè)置為1
}
if($pageno>$pagecount) {
$pageno = $pagecount; //若pageno比總共的頁(yè)數(shù)大,則把它設(shè)置為最后一頁(yè)
}
if($pageno>0) {
$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF轉(zhuǎn)換為可以在URL上使用的字符串,這樣的話就可以處理中文目錄或中文文件名
if($pageno>1){//顯示上一頁(yè)的褳接
echo "<a href="" . $href . "?pageno=" . ($pageno-1) . "">上一頁(yè)</a> ";
}
else{
echo "上一頁(yè) ";
}
for($i=1;$i<$pageno;$i++){
echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";
}
echo $pageno . " ";
for($i++;$i<=$pagecount;$i++){
echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";
}
if($pageno<$pagecount){//顯示下一頁(yè)的褳接
echo "<a href="" . $href . "?pageno=" . ($pageno+1) . "">下一頁(yè)</a> ";
}
else{
echo "下一頁(yè) ";
}$offset = ($pageno-1) * $pagesize;//算出本頁(yè)第一條記錄在整個(gè)表中的位置(第一條記錄為0)
$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查詢本頁(yè)數(shù)據(jù)的SQL語(yǔ)句
$rst = mysql_query($sql);//查詢本頁(yè)數(shù)據(jù)
$num_fields = mysql_num_fields($rst);//取得字段總數(shù)
$i = 0;
while($i<$num_fields){//取得所有字段的名字
$fields[$i] = mysql_field_name($rst,$i);//取得第i+1個(gè)字段的名字
$i++;
}
echo "<table border="1" cellspacing="0" cellpadding="0">";//開始輸出表格
echo "<tr>";
reset($fields);
while(list(,$field_name)=each($fields)){//顯示字段名稱
echo "<th>$field_name</th>";
}
echo "</tr>";
while($row=mysql_fetch_array($rst)){//顯示本頁(yè)數(shù)據(jù)
echo "<tr>";
reset($fields);
while(list(,$field_name)=each($fields)){//顯示每個(gè)字段的值
$field_value = $row[$field_name];
if($field_value==""){
echo "<td> </td>";
}
else{
echo "<td>$field_value</td>";
}
}
echo "</tr>";
}
echo "</table>";//表格輸出結(jié)束
mysql_free_result($rst) or die("無(wú)法釋放result資源!");//釋放result資源
}
else{
echo "目前該表中沒(méi)有任何數(shù)據(jù)!";
}mysql_close($server) or die("無(wú)法與服務(wù)器斷開連接!");//斷開連接并釋放資源
?>
從這個(gè)例子可以看出,PHP的語(yǔ)法結(jié)構(gòu)很象C語(yǔ)言,并易于掌握。而且PHP的跨平臺(tái)特性讓程序無(wú)論在WINDOWS平臺(tái)還是LINUX、UNIX系統(tǒng)都能運(yùn)行自如。筆者編寫PHP程序是在WINNT4中,然后上傳到UNIX系統(tǒng)運(yùn)行,從未發(fā)現(xiàn)兼容性的問(wèn)題。到目前為止,無(wú)論在個(gè)人網(wǎng)站還是在企業(yè)網(wǎng)站上,以上4種技術(shù)中以PHP的應(yīng)用最為廣泛。

以上4種技術(shù),皆在制作動(dòng)態(tài)網(wǎng)頁(yè)上各顯神通。至于選擇哪種技術(shù),取決于制作者的愛(ài)好和技術(shù)儲(chǔ)備。對(duì)于廣大個(gè)人主頁(yè)的愛(ài)好者、制作者來(lái)說(shuō),筆者建議盡量少用難度較大、上手較慢的CGI技術(shù)。如果您是"微軟"的擁躉,采用ASP技術(shù)會(huì)讓您得心應(yīng)手;如果是LINUX的追求者,運(yùn)用PHP技術(shù)在目前是最恰當(dāng)、最明智的選擇。此外,不要忽略了JSP技術(shù),據(jù)說(shuō)它是未來(lái)最有發(fā)展前途的動(dòng)態(tài)網(wǎng)站技術(shù),但是在學(xué)JSP之前,必須掌握J(rèn)AVA技術(shù)。