EL表达式语言

来源:互联网 发布:中华王电子烟 淘宝 编辑:程序博客网 时间:2024/05/18 02:48

1,EL表达式简介


¨EL 全名为Expression Language。EL主要作用:
¨获取数据:
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
¨执行运算:
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
¨获取web开发常用对象
EL表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
¨调用Java方法
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
2,获取数据

¨使用EL表达式获取数据语法:“${标识符}”
¨EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””(注意,不是null,而是空字符串)。
¨示例:${user}
¨EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
${user.address.city}
${user.list[0]}:访问有序集合某个位置的元素
${map.key}  : 获得map集合中指定key的结合JSTL的foreach标签,使用EL表达式也可以很轻松迭代各种类型的数组或集合,示例:
迭代数组
迭代collection类型集合迭代map类型集合
3,执行运算

empty运算符:检查对象是否为null或“空”,很好用!!!
二元表达式:${user!=null?user.name: “”} ,很好用!!!
[ ] 和. 号运算符

4,获得web开发常用对象

¨EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
¨语法:${隐式对象名称}  :获得对象的引用

5,执行运算


¨运算示例index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    
    <title>My JSP 'login.jsp' starting page</title>
    
    

  </head>
 
  <body>
    <form action="index.jsp" method="post">
        <table>
            <tr>
                    <td>用户名</td>
                    <td><input type="text" name="name"></td>
            </tr>
            <tr>
                    <td>密码</td>
                    <td><input type="password" name="pass"></td>
            </tr>
            <tr>
                <td>爱好</td>
                <td>
                    <input type="checkbox" name="likes" value="book">看书
                    <input type="checkbox" name="likes" value="sport">运动
                    <input type="checkbox" name="likes" value="run">     跑
                </td>
            </tr>
            <tr>
                    
                    <td><input type="submit" value="提交" ></td>
                    <td><input type="reset"  value="重置" ></td>
            </tr>
        </table>
    </form>
  </body>
</html>
2,GroupDao
package dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import bean.Group;
import bean.User;

public class GroupDao {

    public static Group getList(){
        
        Group group=new Group();
        User u1=new User("1","张3","123455",19,true,100);
        User u2=new User("2","李四","123455",21,false,80);
        User u3=new User("3","王五","123455",20,true,90);
        List<User> list=new ArrayList<User>();
        list.add(u1);
        list.add(u2);
        list.add(u3);
        
        group.setList(list);
        
        return group;
    }
    
public static Group getMap(){
        
    Group group=new Group();
    User u1=new User("1","张3","123455",19,true,100);
    User u2=new User("2","李四","123455",21,false,80);
    User u3=new User("3","王五","123455",20,true,90);
    
    Map<String,User> map=new HashMap<String,User>();
    
    map.put(u1.getId(),u1);
    map.put(u2.getId(),u2);
    map.put(u3.getId(),u3);
    
    return group;
    }
}
3,TagUtil.java
package util;

public class TagUtil {
    public static String trans(String str){
        
        StringBuffer stb=new StringBuffer();
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
            switch (c) {
            case '<':
                stb.append("&lt;");
                break;
            case '>':
                stb.append("&gt;");
                break;
            case '&':
                stb.append("&amp;");
                break;
            case '"':
                stb.append("&quot;");
                break;
            default:
                 stb.append(c);
            }
        }
        
        return stb.toString();
    }
    public static void main(String[] args) {
        System.out.println(TagUtil.trans("<b>Hello!!</b>"));
    }
}


6,获得web开发常用对象

7,获得web开发常用对象
¨测试各个隐式对象
¨注意事项
测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.key.name}或${cookie.key.value}
8,使用EL调用Java方法

¨EL表达式语法允许开发人员开发自定义函数,以调用Java类的方法。
示例:${prefix:method(params)}
在EL表达式中调用的只能是Java类的静态方法
这个Java类的静态方法需要在TLD文件中描述,才可以被EL表达式调用。
EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能。
9,ELFunction开发步骤

¨一般来说, EL自定义函数开发与应用包括以下三个步骤:
编写一个Java类的静态方法
编写标签库描述符(tld)文件,在tld文件中描述自定义函数。
在JSP页面中导入和使用自定义函数
¨示例:开发对html标签进行转义的el function
10,开发ELFunction注意事项

¨编写完标签库描述文件后,需要将它放置到<web应用>\WEB-INF目录中或WEB-INF目录下的除了classes和lib目录之外的任意子目录中。
¨TLD文件中的<uri>元素用指定该TLD文件的URI,在JSP文件中需要通过这个URI来引入该标签库描述文件。
¨<function>元素用于描述一个EL自定义函数,其中:
<name>子元素用于指定EL自定义函数的名称。
<function-class>子元素用于指定完整的Java类名
<function-signature>子元素用于指定Java类中的静态方法的签名,方法签名必须指明方法的返回值类型及各个参数的类型,各个参数之间用逗号分隔。
11,EL注意事项

¨EL表达式是JSP 2.0规范中的一门技术。因此,若想正确解析EL表达式,需使用支持Servlet2.4/JSP2.0技术的WEB服务器。
¨注意:有些Tomcat服务器如不能使用EL表达式

  (1)升级成tomcat6

  (2)在JSP中加入<%@ pageisELIgnored="false" %>

12, EL表达式保留关键字

13,案例

score.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   
    
    <title>平均分表达式</title>
    
    
  </head>
 
  <body bgcolor="pink">
   <h1>五门学科平均分</h1>
   <form action="score.jsp" border="1px" bordercolor="blank" >
           <tr>
               <td>请输入语文的成绩:</td>
               <td><input type="text" value="${param.chinese}" name="chinese" size="5" maxlength="3"/>
               <b>100</b></td><br/>
           </tr>
           <tr>
               <td>请输入英语的成绩:</td>
               <td><input type="text" value="${param.English}" name="English" size="5" maxlength="3"/>
               <b>100</b></td><br/>
           </tr>
           <tr>
               <td>请输入数学的成绩:</td>
               <td><input type="text" value="${param.math}" name="math" size="5" maxlength="3"/>
               <b>100</b></td><br/>
           </tr>
           <tr>
               <td>请输入地理的成绩:</td>
               <td><input type="text" value="${param.geography}" name="geography" size="5" maxlength="3"/>
               <b>100</b></td><br/>
           </tr>
           <tr>
               <td>请输入历史的成绩:</td>
               <td><input type="text" value="${param.history}" name="history" size="5" maxlength="3"/>
               <b>100</b></td><br/>
           </tr>
           <tr>
               <td>总分:</td><td>${param.chinese+param.English+param.math+param.geography+param.history}</td>
           </tr><br/>
           <tr>
               <td>平均分:</td><td>${(param.chinese+param.English+param.math+param.geography+param.history)/5}</td>
           </tr><br/>
           <tr>
               <td><input type="submit" value="提交"/></td><br/>
               <td><input type="reset" value="重置"/></td>
           </tr>
   </form>
  </body>
</html>

compare.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <
    
    <title>数学运算,比较2个整数</title>
    
    

  </head>
 
  <body bgcolor="#ffffff">
  <h1>关系运算符</h1>
      <form action="compare.jsp">
          <table border="1">
              <tr>
                 <td><b>数字</b></td> <td><b>运算符</b></td> <td><b>数字</b></td> <td><b>结果</b></td>
              </tr>
              <tr>
                  <td><input type="text" name="num1" value="${param.num1}" size="5" maxlength="3"/></td>
                  <td width=20 align="center"><b>&gt</b></td>
                  <td><input type="text" name="num2" value="${param.num2}" size="5" maxlength="3"/></td>
                  <td>${param.num1 gt param.num2}</td>
              </tr>
              <tr>
                  <td><input type="text" name="num3" value="${param.num3}" size="5" maxlength="3"/></td>
                  <td width=20 align="center"><b>&lt</b></td>
                  <td><input type="text" name="num4" value="${param.num4}" size="5" maxlength="3"/></td>
                  <td>${param.num3 lt param.num4}</td>
              </tr>
              <tr>
                  <td><input type="text" name="num5" value="${param.num3}" size="5" maxlength="3"/></td>
                  <td width=20 align="center"><b>==</b></td>
                  <td><input type="text" name="num6" value="${param.num4}" size="5" maxlength="3"/></td>
                  <td>${param.num5 eq param.num6}</td>
              </tr>
          </table>
          <input type="submit" value="结果"/>
          
      </form>
  </body>
</html>


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 爱奇艺离线视频显示暂无缓存怎么办 酷狗音乐不小心删了歌怎么办 苹果手机里系统占的空间太大怎么办 酷狗音乐歌单里有不同步的歌怎么办 一插耳机手机自带音乐就响怎么办 清理空间时不小心把图片删了怎么办 手机中清理误把照片删了怎么办 清理手机文件把照片给删了怎么办 清理手机不小心把照片删了怎么办 金牛不回微信我也不理他他会怎么办 华为手机微信文件自动删除怎么办 微信清理数据后不能登录了怎么办 k歌占内存又不想删除歌曲怎么办 把所有商品放在一起做链接怎么办 微信解冻短信验证总显示失败怎么办 淘金币能抵钱商家拿了淘金币怎么办 真实订单被系统判定虚假交易怎么办 淘宝买家号疑似虚假交易违规怎么办 货品交易一方收了定金违约了怎么办 饿了么店铺收到差评怎么办 淘宝顾客退款没成功给差评怎么办 身份证绑定了淘宝注册支付宝怎么办 把钱转错到支付宝账号被扣了怎么办 网上买东西收到信息被删掉了怎么办 表格在手机上显示不出来怎么办? 电子表格中复制后没有虚线框怎么办 word中页眉页脚横线短了怎么办 亿图图示画的图不显示怎么办 掌柜宝用了几天无法登录了怎么办 手机千牛消息不小心删除了怎么办 淘宝账号被冻结提示无法恢复怎么办 商家未发货我误点了确认收货怎么办 淘宝买货商家不发货也不退款怎么办 商家没发货点成收货了怎么办 淘宝新店上架产品未通过审核怎么办 安卓手机电池虚电怎么办_查查吧 拼多多拼单期间商家下架商品怎么办 微信绑别人的卡需要人脸认证怎么办 支付宝把钱转到了停用的账号怎么办 我注册征信账号忘记了要怎么办 客户说考虑考虑我该怎么办招商类