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

jsp程序设计:jstl之el

Posted on 2008-10-25 23:29 梦与桥 阅读(1634) 评论(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>


    只有注册用户登录后才能发表评论。


    网站导航: