從語法和對象比較看ASP與JSP功能的可轉(zhuǎn)化性
我們將通過ASP和JSP語法和對象之間的比較來說明,從ASP到JSP之間的轉(zhuǎn)換是可以實現(xiàn)的。
ASP與JSP的隱含對象
Application Object: 在所有用戶間分享當(dāng)前應(yīng)用信息。
- < % Dim ls_write
- For Each Key in Application.Contents
- ls_write = Key + ":"+Application(Key)
- Next
- %>
Config Object: 存儲servlet的配置信息,但是很少使用。
功能 | ASP | JSP |
對象名稱 | ASP沒有類似對象 | config |
對象類型 | N/A | javax.servlet.ServletConfig |
Servlet名稱 | N/A | getServletName |
返回servlet初始化參數(shù)的名稱 | N/A | getInitParameterNames() |
得到初始參數(shù)的值 | N/A | getInitParameter(String name) |
Error Object: 包含在腳本中發(fā)生的任何錯誤信息
功能 | ASP | JSP |
對象名稱 | ASPError | Exception |
對象類型 | N/A | java.lang.Throwable |
特別注意 | 在最新的ASP3.0/IIS5.0對象,可以使用Server.GetLastError方法來獲得ASPError對象 | 只有把頁面定義為error頁面的時候才能夠得到它??梢允褂萌缦侣暶鳎? < %@ page isErrorPage="true" %> |
錯誤消息 | Description () | getMessage() |
得到全部錯誤 | ASPDescription() | toString() |
錯誤跟蹤 | N/A | printStackTrace(out) |
錯誤位置 | LineColumn | N/A |
Out: 用來寫和控制從服務(wù)器到瀏覽器的輸出緩存
功能 | ASP | JSP |
對象名稱 | Response | out |
對象類型 | N/A | javax.servlet.jsp.JspWriter |
將數(shù)據(jù)寫入output 緩存中 | Write variant | print(object or primitive data type) |
寫二進制數(shù)據(jù) | BinaryWrite data | 必須通過java OutputStream類來使用這個方法。 ServletOutputStream Output = response.getOutputStream();Output.write(Btye[] buffer); |
清空out緩存 | Clear | clearBuffer() |
發(fā)送當(dāng)前的緩存到客戶端 | Flush | flush() |
停止處理當(dāng)前頁面 | End | close() 這與end不同,它關(guān)閉了當(dāng)前的輸出流,而JSP頁面仍然將完成它的處理 |
Request Object: 從客戶端(瀏覽器)接受信息。
功能 | ASP | JSP |
對象名稱 | Request | request |
對象類型 | N/A | 是javax.servlet.ServletRequest的子類 通常是javax.servlet.HttpServletRequest |
Cookie細(xì)節(jié) | Cookies(cookie)[(key).attribute] | cookie[]=getCookies() |
獲取表格數(shù)據(jù) | string = Form(element)[(index)]For example:mydata= Request.Form("date") | string = getParameter(Name)Enum = getParameterNames()string[]= getParameterValues(name)For example:ls_form = request.getParameter("date"); |
獲取查詢數(shù)據(jù) | QueryString(element)[(index)|.Count] | getParameter(Name)getQueryString() (entire query string) |
由客戶端發(fā)送的HTTP頭 | ServerVariables (server environment var)For example: ServerVariables (ALL_RAW) returns to you all the headers in raw format |
getHeaderNames()getHeader(name)getHeaders(name)getIntHeader(name)getDateHeader(name) |
Response Object:發(fā)送信息到瀏覽器。ASP和JSP對待response對象有一些不同。ASP只使用Response對象來控制到瀏覽器的輸出。JSP將這個功能分離到兩個對象中。在JSP中Response是被發(fā)送到客戶端的實際對象。JSP也使用out對象來實現(xiàn)向輸出緩存寫功能。
功能 | ASP | JSP |
對象名稱 | Response | response |
對象類型 | N/A | 是javax.servlet.ServletResponse的子類,通常用:javax.servlet.HttpServletResponse |
緩存頁面輸出 | Buffer = True/False | JSP的頁面緩存通常為8K??梢栽O(shè)置緩存大小,下面的例子是關(guān)閉緩存 < %@ page buffer= "none" %> |
啟用/不啟用代理服務(wù)器緩存 | CacheControl =Private/Public | setHeader("Pragma","no-cache")setHeader("Cache-Control","no-cache") |
添加Cookie | Cookies(cookie)[(key).attribute] = value | addCookie(cookie) |
添加Http頭 | AddHeader Name,Value | setHeader(Name,Value) |
使客戶端連接到另外一個頁面 | Redirect URL | sendRedirect(Absolute URL) |
發(fā)送錯誤信息到客戶端 | N/A | sendError(int code,String msg) |
設(shè)置輸出MIME類型 | ContentType = "MIME TYPE" | setContentType("MIME TYPE") |
Server Object: 提供到服務(wù)器端的方法和屬性的連接。
功能 | ASP | JSP |
對象名稱 | Server | JSP沒有服務(wù)器對象,在ASP Server對象中的功能已經(jīng)被分配到了別的頁面中 |
對象類型 | N/A | N/A |
在服務(wù)器端創(chuàng)建一個對象 | CreateObject(Object id) | N/A |
對一個String進行HTML編碼 | HTMLEncode(String) | N/A |
通過絕對路徑尋找文件 | MapPath( Path ) | N/A |
對URL進行編碼 | URLEncode(String) | N/A |
設(shè)置超時 | ScriptTimeout = Seconds | N/A |
Session Object:為一個用戶在多頁面間共享信息。
功能 | ASP | JSP |
對象名稱 | Session | session |
對象類型 | N/A | javax.servlet.http.HttpSession |
注意 | ASP通過使用cookie使用session | JSP有兩種session管理方法: 1.使用cookie 2.使用URL重寫 |
關(guān)閉session并釋放其資源 | Abandon | invalidate() |
存儲一個session變量 | Session (String name) ="Your Data" | setAttribute(String name,Object object)* |
存儲一個session對象 | Set Session (String name) = Server.CreateObject(String name) | 同上 |
獲取一個session變量 | My_Variable = Session(String name) | getAttribute (String name)* |
獲取一個session對象 | Set My_Object = Session(String name) | 同上 |
刪除一個session的對象或變量 | Contents.Remove(String name) | removeAttribute(String name) |
收集內(nèi)容 | Contents | getAttributeNames() |
Session ID | SessionID | string =getId() |
設(shè)置超時 | Timeout(Minutes) | setMaxInactiveInterval(int interval in seconds) |
得到超時設(shè)置 | N/A | int =getMaxInactiveInterval() |
禁用session | < %@ EnableSessionState = False%> | < %@ page session="false"%> |
ASP與JSP的腳本
腳本聲明:怎么將服務(wù)器端的腳本從客戶端的腳本中分離開。
ASP | JSP |
< % Your Server Side Script %> | < % Your Server Side Script %> |
表達(dá)式:將數(shù)據(jù)直接送到輸出緩存中。
ASP | JSP |
< %= Your_Variable %> | < %= Your_Variable %> |
申明:申明變量和方法,使他們可以在本頁面內(nèi)使用。
ASP | JSP |
< % Your Function %> | < %!Your Function %> |
標(biāo)識:告訴容器怎樣處理這個頁面,
ASP | JSP |
< %@ Your Directive %> | < %@ Your Directive %> |
例如設(shè)置腳本語言: < %@ LANGUAGE="VBSCRIPT" %> 再如: < %response.buffer=true%> |
標(biāo)識發(fā)送信息給容器 標(biāo)識不向輸出緩存發(fā)送信息 當(dāng)JSP頁面初始化時,標(biāo)識被處理 例如設(shè)置腳本語言: < %@ page language= "java"%> 再如: < %@ pagebuffer="64k"autoFlush= "true"%> |
腳本注釋:
注釋類型 | ASP | JSP |
一般注釋 | < % 'Your Comment %> | Java的注釋: < %//my comment %> 或< % /* my comment */ %> |
特定注釋 | N/A | JSP的注釋: < %-- your comment --%> 這類注釋不在容器中處理,也不放入servlet中 |
ASP與JSP的引入文件
引入:在頁面沒有處理前,引入文件
ASP | JSP |
< !--#include file="Your File.asp" --> < !--#include virtual ="/Your File.asp"--> |
< %@ include file="Your File" %> < jsp:directive.include file="Your File" %> |
ASP與JSP的轉(zhuǎn)文件
ASP | JSP |
response.redirect("to_File.asp") | response.sendRedirect("to_File.asp") |
【編輯推薦】