使用JavaServer Pages2.0開發Web應用 (轉)

發表於2008-01-24
使用JavaServer Pages2.0開發Web應用 (轉)[@more@]

使用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



FoContent


 



 


Fill-out-form




  Name =


 



 



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 x and y


  add


  jsp2.examples.el.Compute


 


  int


  add(java.lang.String,java.lang.String)


 


 


現在,我們可以寫JSP頁面程式碼使用這個功能了。示例四顯示一個表格,使用者輸入兩個數並單擊Add Numbers按鈕,則功能Add被呼叫,結果顯示在同一頁上。

Code Sample 4: math.jsp

 uri=" %>


 



Functions



Add Numbers




  X =


 


  Y =


 




The sum is: ${my:add(param["x"],param["y"])}



相關文章