posts - 37, comments - 8, trackbacks - 0, articles - 0

          jsp程序設計:jstl之el

          Posted on 2008-10-25 23:29 夢與橋 閱讀(1644) 評論(0)  編輯  收藏 所屬分類: jsp程序設計
          1、el即表達式語言,是JSP技術的主要特點之一。可用于
              1)靜態文本,包含EL表達式,其值在運行時計算出來,EL表達式被該值替換。
              2)標準標簽和自定義標簽,以幫助顯示網頁上的動態內容。
              3)讀取JavaBean的值,使用EL表達式可以簡潔地讀出JavaBean的屬性值。
              4)實例:包括book.java與readBook.jsp
              book.java的代碼如下:
          package wzz;
          public class book {
              
          private String name="J2EE編程技術";
              
          private String author="郝玉龍";
              
          private String publish="清華大學出版社";
              
          private Double price=27.00;
              
          public String getName() {
                  
          return name;
              }

              
          public String getAuthor() {
                  
          return author;
              }

              
          public String getPublish() {
                  
          return publish;
              }

              
          public Double getPrice() {
                  
          return price;
              }

          }
              readBook.jsp的代碼如下:
          <%@ page language="java" contentType="text/html; charset=GBK"%>
          <jsp:useBean id="books" class="wzz.book"></jsp:useBean>
          <body> 
          書名:${books.name}
          <br>
          作者:${books.author}
          <br>
          出版社:${books.publish }
          <br>
          定價:${books.price }
          <br>
          打八折后:${books.price*0.8 }
          <br>
          </body>
          2、EL使用語法
              1)“.”與[ ]運算符,兩者是等價的,${books.name}與${books["name"]}的作用一樣。
              2)EL變量可以引用存儲在標準范圍中的屬性,默認的搜索順序是page、request、session和application。如果需要,可以使用toString()方法將變量的返回值轉換成為字符串;如果找不到變量,則返回null值。字符串可以用單引號也可以用雙引號括起來,可以使用轉義字符。
              3)EL保留字:
          運算符 描述 運算符 描述 運算符 描述 運算符 描述 運算符 描述
          and eq 等于 gt 大于 false False div 相除
          or ne 不等于 ge 大于 等于 null Null mod 取模
          not le 小于等于 true True empty 清空
          4)EL隱式對象:
          下表中列出了 11 個 EL 隱式對象的標識符。不要將這些對象與 JSP 隱式對象(一共只有九個)混淆,其中只有一個對象是它們所共有的。

           

          類別 標識符 描述
          JSP pageContext PageContext 實例對應于當前頁面的處理
          作用域 pageScope 與頁面作用域屬性的名稱和值相關聯的 Map
          requestScope 與請求作用域屬性的名稱和值相關聯的 Map
          sessionScope 與會話作用域屬性的名稱和值相關聯的 Map
          applicationScope 與應用程序作用域屬性的名稱和值相關聯的 Map
          請求參數 param 按名稱存儲請求參數的主要值的 Map
          paramValues 將請求參數的所有值作為 String 數組存儲的 Map
          請求頭 header 按名稱存儲請求頭主要值的 Map
          headerValues 將請求頭的所有值作為 String 數組存儲的 Map
          Cookie cookie 按名稱存儲請求附帶的 cookie 的 Map
          初始化參數 initParam 按名稱存儲 Web 應用程序上下文初始化參數的 Map

          盡管 JSP 和 EL 隱式對象中只有一個公共對象(pageContext),但通過 EL 也可以訪問其它 JSP 隱式對象。原因是 pageContext 擁有訪問所有其它八個 JSP 隱式對象的特性。實際上,這是將它包括在 EL 隱式對象中的主要理由。

          其余所有 EL 隱式對象都是映射,可以用來查找對應于名稱的對象。前四個映射表示先前討論的各種屬性作用域。可以用它們來查找特定作用域中的標識符,而不用依賴于 EL 在缺省情況下使用的順序查找過程。

          接下來的四個映射用來獲取請求參數和請求頭的值。因為 HTTP 協議允許請求參數和請求頭具有多個值,所以它們各有一對映射。每對中的第一個映射返回請求參數或頭的主要值,通常是恰巧在實際請求中首先指定的那個值。每對中第二個映射允許檢索參數或頭的所有值。這些映射中的鍵是參數或頭的名稱,但這些值是 String對象的數組,其中的每個元素都是單一參數值或頭值。

          cookie 隱式對象提供了對由請求設置的 cookie 名稱的訪問。這個對象將所有與請求相關聯的 cookie 名稱映射到表示那些 cookie 特性的 Cookie對象。

          最后一個 EL 隱式對象 initParam 是一個映射,它儲存與 Web 應用程序相關聯的所有上下文的初始化參數的名稱和值。初始化參數是通過 web.xml 部署描述符文件指定的,該文件位于應用程序的 WEB-INF 目錄中。

          5)隱式對象實例:Book.java+z1.jsp(設置bean并轉向z2.jsp)+z2.jsp(el讀取bean)
          Book.java的代碼如下:
          package wzz;
          public class Book {
              
          private String name;
              
          private String author;
              
          public void setName(String name) {
                  
          this.name = name;
              }

              
          public void setAuthor(String author) {
                  
          this.author = author;
              }

              
          public String getName() {
                  
          return name;
              }

              
          public String getAuthor() {
                  
          return author;
              }

          }
          z1.jsp的代碼如下:
          <%@ page language="java" contentType="text/html; charset=GBK"%>
          <%@ page import="wzz.Book"%>
          <body>
              
          <%
                  Book book1 
          = new Book();
                  book1.setName(
          "JSP大學實用教程");
                  book1.setAuthor(
          "耿祥義");
                  request.setAttribute(
          "book", book1);

                  Book book2 
          = new Book();
                  book2.setName(
          "JSP應用開發");
                  book2.setAuthor(
          "鄧子云");
                  session.setAttribute(
          "book", book2);
                  request.setCharacterEncoding(
          "gb2312");
                  pageContext.forward(
          "z2.jsp?pj=好書!");
              
          %>
          </body>
          z2.jsp的代碼如下:
          <%@ page language="java" contentType="text/html; charset=GBK"%>
          <body>
          這本書是:${book.name }
          <br>
          這本書的作者是:${requestScope.book.author }
          <br>
          那本書是:${sessionScope['book'].name }
          <br>
          那本書的作者是:${sessionScope.book.author }
          <br>
          對這兩書的評價(傳來的參數):${param.pj }
          <br>
          主機是:${header['host'] }
          <br>
          瀏覽器是:${header['User-Agent'] }
          </body>
              6)EL運算符(算術運算符、關系運算符、邏輯運算符、驗證運算符)
          以下是EL運算符列表,其中empty可以檢查某個值是否為空
            1. 運算符
            說明 運算符 說明

            +

            > 或 gt 大于

            -

            <= 或 le 小于等于

            *

            >= 或 ge 大于等于

            / 或 div

            && 或 and 邏輯與

            % 或 mod

            模(求余)

            || 或 or 邏輯或

            == 或 =

            等于

            ! 或 not 邏輯非

            != 或 !=

            不等于

            empty 檢查是否為空值

            < 或 lt

            小于

            a ? b : c 條件運算符
                7)EL運算符演示程序:
            <%@ page contentType="text/html;charset=gbk" %>
            <html>
              
            <head>
                
            <title>
                  EL運算符使用演示
                
            </title>
              
            </head>
              
            <body bgcolor="#ffffff">
                
            <h1>
                  EL運算符使用演示
                
            </h1>
                
            <table border="1">
                  
            <thead>
                    
            <td><b>EL Expression</b></td>
                    
            <td><b>Result</b></td>
                  
            </thead>
                  
            <tr>
                    
            <td>\${1}</td>
                    
            <td>${1}</td>
                  
            </tr>
                  
            <tr>
                    
            <td>\${1.2E4 + 1.4}</td>
                    
            <td>${1.2E4 + 1.4}</td>
                  
            </tr>
                  
            <tr>
                    
            <td>\${3 div 4}</td>
                    
            <td>${3 div 4}</td>
                  
            </tr>
                  
            <tr>
                    
            <td>\${3/0}</td>
                    
            <td>${3/0}</td>
                  
            </tr>
                  
            <tr>
                    
            <td>\${(1==2) ? 3 : 4}</td>
                    
            <td>${(1==2) ? 3 : 4}</td>
                  
            </tr>
                  
            <tr>
                      
            <td>\${1 lt 2}</td>
                      
            <td>${1 lt 2}</td>
                  
            </tr>
                  
            <tr>
                      
            <td>\${4.0 &gt;= 3}</td>
                    
            <td>${4.0 >= 3}</td>
                  
            </tr>
                  
            <tr>
                      
            <td>\${(10*10) ne 100}</td>
                      
            <td>${(10*10) ne 100}</td>
                  
            </tr>
                  
            <tr>
                      
            <td>\${'a' &lt; 'b'}</td>
                      
            <td>${'a' < 'b'}</td>
                  
            </tr>
                  
            <tr>
                      
            <td>\${'hip' &gt; 'hit'}</td>
                      
            <td>${'hip' > 'hit'}</td>
                  
            </tr>
                  
            <tr>
                    
            <td>${'${'}true && false}</td>
                    
            <td>${true && false}</td>
                  
            </tr>     
                
            </table>
              
            </body>
            </html>
                8)EL表達式計算的配置與禁用

            對于一個單個JSP頁面,你可以使用定義page指令來設置jsp頁面是否支持EL。默認是支持EL(如果要頁面不支持EL,請設置為isELIgnored=true;禁用為false。

            <%@ page isELIgnored="true|false"%>

            對于整個JSP應用程序,要修改WEB.XML配置(tomcat6默認是支持EL的,不用進行修改。);

            <jsp-property-group> 
            <description> For config the ICW sample application </description>
            <display-name>JSPConfiguration</display-name>
            <url-pattern>/jsp/datareset.jsp</url-pattern>
            <el-ignored>true< / el-ignored>
            <page-encoding>ISO-8859-1</page-encoding>
            <scripting-invalid>true</scripting-invalid>
            <include-prelude>/jsp/prelude.jspf</include-prelude>
            <include-coda>/jsp/coda.jspf</include-coda>
            </jsp-property-group>

            主站蜘蛛池模板: 大关县| 东丽区| 原平市| 裕民县| 宜兴市| 磐石市| 临漳县| 清新县| 翁牛特旗| 深州市| 泸溪县| 大荔县| 昭通市| 巫溪县| 无棣县| 临洮县| 满洲里市| 承德县| 准格尔旗| 龙陵县| 高要市| 太湖县| 镇赉县| 广河县| 开封市| 正蓝旗| 灵宝市| 马鞍山市| 连南| 全州县| 朝阳市| 手机| 西华县| 灵台县| 平潭县| 辉县市| 彭州市| 遂宁市| 武威市| 舟曲县| 武山县|