ASP與JSP之間的區(qū)別和聯(lián)系
動態(tài)網(wǎng)頁技術(shù)開發(fā)ASP和JSP的比較請看這里:http://www.webjx.com/htmldata/2005-05-29/1117327873.html
ASP好像不存在線程安全問題,而JSP是存在線程安全問題。這不是說ASP好,恰恰相反說明ASP不如JSP好。
對于ASP:每次請求都要解釋執(zhí)行服務(wù)器端代碼,執(zhí)行完除了Session和Application在,其他的都沒了,這樣的話ASP就無法實現(xiàn)靜態(tài)變量,不知道是不是真的沒有辦法實現(xiàn),請高手指點。
而在JSP中,Servlet(JSP也會變成Servlet)是多線程的,執(zhí)行完后不但Session和Application還在,而且Servlet實例還在內(nèi)存,以后請求的話就可以直接用它了,正是這個提高了效率。
我總感覺Servlet模型比ASP先進,而且Java語言使它很專業(yè)!這點真的是ASP遠遠無法比的。
JSP和ASP的幾點區(qū)別
Session管理
為了跟蹤用戶的操作狀態(tài),ASP應(yīng)用SESSION對象。JSP使用一個叫HttpSession的對象實現(xiàn)同樣的功能。Session的信息保存在服務(wù)器端,Session的id保存在客戶機的cookie中。如果客戶機禁止cookie,Session Id就必須帶在url后面。Session一般在服務(wù)器上設(shè)置了一個30分鐘的過期時間,當客戶停止活動后自動失效。Session 中保存和檢索的信息不能是基本數(shù)據(jù)類型(primitivedatatypes)如(int, double)等,而必須是java的相應(yīng)的object(對象)如(Integer,Double)。
HttpSessionsession=request.getSession();//得到一個session對象或創(chuàng)建一個
session.getId()//得到sessionID數(shù)
Integerid=(Integer)session.getValue("id")//檢索出session的值并轉(zhuǎn)化為整型 session.putValue("ItemValue",itemName);//ItemValue必須不是must簡單類型
Application管理
有時服務(wù)器需要管理面向整個應(yīng)用的參數(shù),使得每個客戶都能獲得同樣的參數(shù)值。和Session一樣,ASP使用Application對象而JSP使用ServletContext對象,操作的方法和Session一樣。
getServletContext().setAttribute("Item",ItemValue);//設(shè)置一個應(yīng)用變量
Integeri=(Integer)getServletContext().getAttribute("ItemName");//得到//item
ServerSideIncludes
在服務(wù)器端引用上ASP和JSP有著相同之處。ASP和JSP都可以支持此功能的服務(wù)器(IIS,APACHE)上實現(xiàn)服務(wù)器端包含虛文件。但JSP是將動態(tài)頁面的結(jié)果包含進來,而不是包含文件的代碼本身。當你包含的文件在另一個服務(wù)器上時,不包含任何代碼和對象是一個非常有效的功能。
ASP:<!--#includefile="subfile.asp"-->
JSP:<%@includefile="subfile.jsp"-->