摘要:本文以一個顯示當(dāng)前日期的功能為引例,分別利用Java腳本和JavaScript腳本嵌入在HTML頁面中實現(xiàn),由兩者表面上的不同,進(jìn)一步分析出兩者實質(zhì)的區(qū)別,即它們的執(zhí)行過程是不一樣的。
關(guān)鍵詞:JavaScript;Java;JSP
中圖分類號:TP312.2 文獻(xiàn)標(biāo)識碼:A文章編號:1007-9599 (2012) 07-0000-01
眾所周知,在HTML頁面中可以嵌入Java和JavaScript腳本,但兩者的表示方式不同,這也是兩者表面上的區(qū)別。JavaScript腳本是以“”為邊界,而Java腳本是以“<%”和“%>”為邊界。而且嵌入JavaScript后頁面的文件擴(kuò)展名既可以仍然是.htm,也可以修改成.jsp,但嵌入Java后的文件擴(kuò)展名必須要改為.jsp,因此稱嵌入Java腳本的頁面文件為JSP文件?,F(xiàn)在我們來看一個簡單的例子,即在瀏覽器的頁面中顯示當(dāng)前的日期。
假設(shè)用JavaScript腳本實現(xiàn)的頁面對應(yīng)的文件叫ShowDate1.jsp,代碼如下。
您計算機(jī)上當(dāng)前日期為:
而用Java腳本實現(xiàn)的頁面對應(yīng)的文件叫ShowDate2.jsp,代碼如下。
<%@page language=\"java\" import=\"java.util.*,java.text.*\"
contentType=\"text/html;charset=GBK\"%>
<%SimpleDateFormat formater=new SimpleDateFormat(\"yyyy年MM月dd日\");
String strCurrentDate=formater.format(new Date());%>
表面看過去,以上兩個頁面都是獲取日期然后顯示出來。但顯示的結(jié)果可能不同,因為它們獲取的是不同計算機(jī)上的日期。含有JavaScript和Java的頁面顯示的分別是客戶端和服務(wù)器的日期。因為JavaScript和Java分別是運行在客戶端和服務(wù)器上的,即Java與JavaScript實質(zhì)區(qū)別是執(zhí)行原理不同。打開瀏覽器運行ShowDate1.jsp,然后選擇菜單欄的“查看”#61664;“源文件”,看到的代碼與ShowDate1.jsp的源代碼相同。但是,用同樣的方法查看ShowDate2.jsp的源文件,看到的代碼是下面這樣的。
這與ShowDate2.jsp的源代碼不同,所有夾在“<%”和“%>”中的代碼不見了,而且源代碼中“<%=strCurrentDate %>”的位置變成日期。這說明,保存在客戶端的ShowDate1.jsp和ShowDate2.jsp,經(jīng)過服務(wù)器回到客戶端,前者的代碼沒變,而后者的代碼被改動了。為什么會這樣?正是因為嵌入Java和JavaScript的頁面本質(zhì)區(qū)別是執(zhí)行原理的不同,分析如下。
一、含有JavaScript腳本頁面的執(zhí)行過程
1.瀏覽器接收客戶請求。客戶打開瀏覽器,并在地址欄中輸入要訪問的頁面文件,這就表示瀏覽器接收了客戶的請求,接著瀏覽器向服務(wù)器請求頁面。
2.瀏覽器向服務(wù)器發(fā)送請求消息,等待服務(wù)器端的響應(yīng)??蛻舳擞嬎銠C(jī)向服務(wù)器發(fā)出一個請求,其實就是將頁面復(fù)制一份存放在服務(wù)器中。
3.應(yīng)用服務(wù)器向瀏覽器發(fā)送響應(yīng)消息。應(yīng)用服務(wù)器將頁面文件發(fā)送回客戶端瀏覽器,然后由瀏覽器從上到下逐條解析HTML和JavaScript腳本,并顯示頁面效果呈現(xiàn)給客戶。
二、含有Java腳本頁面的執(zhí)行過程
1.瀏覽器接收客戶請求。
2.瀏覽器向服務(wù)器發(fā)送請求消息,等待服務(wù)器端的響應(yīng)。
第1、2兩個步驟與上面相同。接著服務(wù)器處理JSP文件請求需要經(jīng)過以下3個階段。
3.(1)翻譯階段。服務(wù)器中的JSP引擎把ShowDate2.jsp轉(zhuǎn)換成Java源碼,即翻譯成ShowDate2_jsp.java。(2)編譯階段。Java源碼被編譯成可執(zhí)行的二進(jìn)制字節(jié)碼,即ShowDate2_jsp.java被編譯成ShowDate2_jsp.class。(3)執(zhí)行階段。服務(wù)器執(zhí)行二進(jìn)制字節(jié)碼,將執(zhí)行結(jié)果放到JSP文件的對應(yīng)位置。
4.應(yīng)用服務(wù)器向瀏覽器發(fā)送響應(yīng)消息。服務(wù)器將生成的頁面反饋給客戶端瀏覽器,然后由瀏覽器從上到下逐條解析HTML,并顯示頁面效果呈現(xiàn)給客戶。
三、結(jié)論
ShowDate1.jsp到達(dá)服務(wù)器后被發(fā)現(xiàn)嵌入了JavaScript,服務(wù)器就不作任何處理直接發(fā)送回客戶端,所以ShowDate1.jsp的代碼沒有改變。而服務(wù)器發(fā)現(xiàn)ShowDate2.jsp中嵌入了Java腳本,于是把腳本執(zhí)行的結(jié)果放回到原ShowDate2.jsp中Java腳本對應(yīng)的位置,這樣得到了新的ShowDate2.jsp,然后將新的ShowDate2.jsp發(fā)送回客戶端,這時在客戶端查看源文件,ShowDate2.jsp就不是原始樣子。清楚了嵌入Java和JavaScript腳本的HTML頁面執(zhí)行過程的本質(zhì)區(qū)別后,大家在使用Java和JavaScript時,可以有所區(qū)分并會得心應(yīng)手。