使用JavaServer Pages2.0開發Web應用 (轉)
使用Server Pages2.0開發應用:namespace prefix = o ns = "urn:schemas--com::office" />
作者 July
·2.0
JSP2.0對比於JSP1.2來說,提供了一些有趣的新特點,從而使得Web應用設計人員和開發人員的生活更簡單。JSP2.0的目標是讓JSP更容易使用,更重要的是使用它而不需要學習Java語言。透過加入SimpleTag的新的擴充套件機制,JSP2.0簡化了標記(Tag)s。
另外,還有一些其他的改進,以下是JSP2.0引入的新的關鍵特徵。
1. 簡單的表示語言EL(Expression Language),它的使用簡化了JSP中的資料訪問。它簡化了基於JSP的Web應用的程式碼書寫,可以不再使用傳統的Java指令碼和Java了。
2. 定義可重用的定製行為的新句法,由開發者和頁面人員在.tag和.tagx中描述。
3. XML句法也有實質的進步,加入了新的標準檔名擴充套件(標記檔案.tagx和JSP檔案.jspx)
本文將重點講述EL、簡易的標記API、和標記檔案。我相信現有的JSP開發者將發現這些新特性十分有趣和實用。
·為什麼從 1.2跳到2.0
原本JSR152中列出的版本為1.3。然而加入的這些新特性將對JSP應用的開發模型產生深遠的影響,所以專家組覺得只要將主版本號升為2才能更適當的反映這些影響。當然新的版本號也有利於吸引開發者注意新特性。而且新的2.0與原有的1.2版本完全相容,不會影響原有的應用。
·讓我們開始吧!
為了使用JSP2.0,你需要支援JSP2.0和2.4的JSP容器。Jakarta 5.0支援新的JSP2.0和Servlet2.4,可以.org/builds/jakarta-tomcat/release/v5.0.2-alpha/">Tomcat或者s/s/webservicespack.html">jwsdp1.2。
·JSP表示語言(EL)
表示語言(EL)是為頁面人員設計,它將JSP作用域屬性提升成為商務邏輯和JSP頁資訊交流的標準方式。注意,雖然EL是JSP2.0的關鍵方面,但它不是通常意義的語言,它只是簡單的資料訪問語言,它的出現是為了方便繞過指令碼語言和請求時的表示式的值而訪問應用的資料。JSP2.0以前,頁面人員必須使用表示式訪問的資料,就象下面的例子:
或者JavaBean中的資料
表示語言允許頁面人員使用簡易句法訪問。例如,獲得一個簡單變數的值,你可以使用
而獲取JavaBean中的屬性值,你將使用語句 ${aCustomer.address.country}
·訪問應用資料
你可以使用三種形式訪問應用資料:物件的屬性、使用”.”運算子或者使用括號“[名稱]”形式的陣列元素。表示式${data}代表作用域變數data。你可以透過使用句點”.”或者是括號”[]”運算子從聚集中獲取屬性。
1. 句點運算子用於獲取命名的屬性。例如表示式${customer.name}表示customer域內的name屬性。
2. 括號運算子也可以用來獲取命名的屬性,例如${customer[“name”]}。它還可以透過訪問屬性,${customer[0]}表示customer集合中的第一個元素。
表示語言將句點和括號統一對待。因此,${customer.name}和${customer[“name]”}意義相同。誠然所有的EL都使用${和}。EL使用PageContext.findAttribute(String)查詢屬性,如果屬性不存在,則返回空值(null)。
·運算子
EL支援算術、關係和邏輯運算子,另外還有一個特殊的運算子用來判斷物件是否為空。運算子在表1中列出。你可以使用empty運算子確定是否一個聚集或字串為空或null。例如,${empty param.name}為真僅當名為param的請求引數不存在。Empty運算子可以和”!”聯合使用,象${!empty param.name}為真如果param存在時。
表 1:EL運算子
運算子
描述
+
加
-
減
*
乘
/
or div
除
%
or mod
模除(求餘)
==
or =
等於
!=
or !=
不等於
<
or lt
小於
>
or gt
大於
<=
or le
不大於
>=
or ge
不小於
&&
or and
邏輯與
||
or or
邏輯或
!
or not
邏輯非
empty
檢查為空否
a ? b : c
條件語句
·隱含物件
除開運算子,EL還定義了一系列隱含物件以支援應用資料的訪問。隱含物件定義如表2所式
表 2:EL提供的隱含物件
隱含物件
內容
applicationpe
應用域變數集合
cookie
所有的集合
header
HTTP請求頭的字串
headerValues
HTTP請求頭的字串集合
initParam
應用初始引數集合
pageContext
javax.servlet.jsp.PageContext
物件
pageScope
頁面域變數集合
param
請求引數的字串
paramValues
請求引數的字串
requestScope
請求域物件的集合
sessionScope
會話域物件的集合
·EL示例
Web頁面人員可以在不瞭解Java的基礎上使用EL開發。
添表的例子
隱含物件,$param[var]可以被用於讀取表中的資料。見form.jsp程式碼
Code Sample 1: form.jsp
Fill-out-form
The Name is: ${param.name}
在這個例子中,當輸入姓名並單擊按鈕”Submit Name”時,輸入的姓名會在相同的頁面顯示。
·開發和使用(function)
EL允許你定義在表示式中的函式。函式必須在public class中定義為public static方法。一旦函式被開發了,它的簽名必須在標記庫描述符(TLD)中對映。為了說明函式的用法,我使用了簡單的加法例子。首先,我寫一段實現加法功能的Java程式碼,示例二顯示了這個功能。
Code Sample 2: Compute.java
package jsp2.examples.el;
import java.util.*;
public class Compute {
public static int add(String x, String y) {
int a = 0;
int b = 0;
try {
a = Integer.parseInt(x);
b = Integer.parseInt(y);
}catch(Exception e) {}
return a + b;
}
}
一旦javac編譯透過,下一步就是在TLD中對映函式簽名。示例三說明了如何做。
Code Sample 4: Function Descriptor
add(java.lang.String,java.lang.String)
現在,我們可以寫JSP頁面程式碼使用這個功能了。示例四顯示一個表格,使用者輸入兩個數並單擊Add Numbers按鈕,則功能Add被呼叫,結果顯示在同一頁上。
Code Sample 4: math.jsp
uri=" %>
Add Numbers
The sum is: ${my:add(param["x"],param["y"])}
相關文章
- 用JavaServer Faces開發Web應用(4) (轉)JavaServerWeb
- 用JavaServer Faces開發Web應用(3) (轉)JavaServerWeb
- 利用ASP開發Web應用 (轉)Web
- 開發Web應用程式中Cookie使用的問題 (轉)WebCookie
- 開始使用 Python 開發 Web 應用PythonWeb
- 開發Web應用Web
- 使用 Flutter 開發簡單的 Web 應用FlutterWeb
- 使用JAVA開發CORBA應用 (轉)JavaORB
- 用AJAX開發智慧Web應用程式之基礎篇(轉)Web
- 用Servlet開發企業級三層Web應用(一) (轉)ServletWeb
- 使用 Nginx + Lua(OpenResty)開發高效能Web應用NginxRESTWeb
- 關於WEB應用程式的列印元件開發初探 (轉)Web元件
- 讀了《JavaScript Web 應用開發》JavaScriptWeb
- WEB應用開發中的ServletWebServlet
- 急聘JAVA Web應用開發高手JavaWeb
- Node助力Web應用開發——在新的開發平臺,打造高效能Web應用Web
- 一個使用snap的Web應用 (轉)Web
- 使用SAP UI5 Web Components開發React應用UIWebReact
- dotnet core使用開源元件FastHttpApi進行web應用開發元件ASTHTTPAPIWeb
- Yeoman:Web 應用開發流程與工具Web
- Web應用的元件化開發(一)Web元件化
- Web應用的元件化開發(二)Web元件化
- 怎樣使用AJAX進行應用程式開發(轉)
- Google Web應用開發指南第一章:什麼是Web應用?GoWeb
- [應用案例]完美自適應WEB開發官網Web
- 開發Web應用為什麼要用TypeScript?WebTypeScript
- [譯] Rust 開發完整的 Web 應用程式RustWeb
- Web應用程式開發五步法Web
- Web應用開發的七項原則Web
- 靈活使用Kendo UI 核心元件開發web應用資訊提示功能UI元件Web
- Golang 入門系列(十三)用Beego開發web應用GolangWeb
- 用 Nginx + Lua(OpenResty) 開發高效能 Web 應用NginxRESTWeb
- 使用 Flutter 加速應用開發Flutter
- 《Flask Web開發 基於Python的Web應用開發實戰》簡評FlaskWebPython
- 移動裝置的Web應用程式開發----(事件和輸入) (轉)Web事件
- VC開發應用程式答疑 (轉)
- 使用Taro開發鴻蒙原生應用——快速上手,鴻蒙應用開發指南鴻蒙
- 使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南鴻蒙