EL表达式非常好用,好用的吓死人 ~ 

步骤1:取值
步骤2:作用域优先级
步骤3:JavaBean概念
步骤4:获取JavaBean的属性
步骤5:结合JSTL的<c:forEach
步骤6:取参
步骤7:eq

示例 1 : 取值

不同版本的tomcat是否默认开启对EL表达式的支持,是不一定的。

所以为了保证EL表达式能够正常使用,需要在<%@page 标签里加上isELIgnored="false"

使用EL表达式,非常简单

比如使用JSTL输出要写成

<c:out value="${name}" /> 

但是用EL只需要

${name}

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" isELIgnored="false"%>

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

<c:set var="name" value="${'gareen'}" scope="request" />

 

通过标签获取name: <c:out value="${name}" /> <br>

通过 EL 获取name: ${name}

示例 2 : 作用域优先级

EL表达式可以从pageContext,request,session,application四个作用域中取到值,如果4个作用域都有name属性怎么办?

EL会按照从高到低的优先级顺序获取 
pageContext>request>session>application

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" isELIgnored="false"%>

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

<c:set var="name" value="${'gareen-pageContext'}" scope="page" />

<c:set var="name" value="${'gareen-request'}" scope="request" />

<c:set var="name" value="${'gareen-session'}" scope="session" />

<c:set var="name" value="${'gareen-application'}" scope="application" />

 

4个作用域都有name,优先获取出来的是 : ${name}

示例 3 : JavaBean概念

EL可以很方便的访问JavaBean的属性,那么JavaBean是什么呢?

JavaBean的标准
1. 提供无参public的构造方法(默认提供)
2. 每个属性,都有public的getter和setter
3. 如果属性是boolean,那么就对应is和setter方法

比如示例代码中的Hero类,默认提供了一个无参的public的构造方法。 同时每个属性都有getter和setter

package bean;

public class Hero {

    public int id;

    public String name;

    public float hp;

    public int damage;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public float getHp() {

        return hp;

    }

    public void setHp(float hp) {

        this.hp = hp;

    }

    public int getDamage() {

        return damage;

    }

    public void setDamage(int damage) {

        this.damage = damage;

    }

    

}

示例 4 : 获取JavaBean的属性

获取JavaBean的属性,只需要通过.符号操作就可以了。

像这样 ${hero.name} ,就会自动调用getName方法了

注: 如果属性是boolean类型,那么就会自动调用isXXX方法了

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" isELIgnored="false" import="bean.*"%>

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

<%

    Hero hero =new Hero();

    hero.setName("盖伦");

    hero.setHp(616);

    

    request.setAttribute("hero", hero);

%>

 

英雄名字 : ${hero.name} <br>

英雄血量 : ${hero.hp}

示例 5 : 结合JSTL的<c:forEach

EL还可以结合  JSTL的<c:forEach 使用,进一步简化代码

原代码中的

<c:out value="${hero}" /> 

可以简写为

${hero}

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="java.util.*"%>

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

<%

    List<String> heros = new ArrayList<String>();

    heros.add("塔姆");

    heros.add("艾克");

    heros.add("巴德");

    heros.add("雷克赛");

    heros.add("卡莉丝塔");

    request.setAttribute("heros",heros);

%>

 

<table width="200px" align="center" border="1" cellspacing="0">

<tr>

    <td>编号</td>

    <td>英雄</td>

</tr>

   

<c:forEach items="${heros}" var="hero" varStatus="st"  >

    <tr>

        <td>${st.count}</td>

        <td>${hero}</td>

    </tr>

</c:forEach>

</table>

示例 6 : 取参

EL表达式还可以做到request.getParameter("name") 这样的形式获取浏览器传递过来的参数
先把jstl.jsp代码改为如例所示,然后访问如下地址

http://127.0.0.1/jstl.jsp?name=abc

可以观察到获取了参数 name

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="java.util.*" isELIgnored="false"%>

${param.name}

示例 7 : eq

进行条件判断,大大简化了 JSTL的 c:if 和 c:choose 代码

如例,一行代码就能起到其他好几行代码的效果

${killNumber ge 10"超神":"还没超神" }

例子中讲的是大于等于,除此之外的其他用法如下:
eq相等 ne、neq不相等,
gt大于, lt小于
gt大于, lt小于
gte、ge大于等于  
lte、le 小于等于  
not非 mod求模  
is [not] div by是否能被某数整除  
is [not] even是否为偶数  
is [not] odd是否为奇

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" import="java.util.*"%>

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%

request.setAttribute("killNumber""10");

%>

c:if 的用法,运行结果:

<c:if test="${killNumber>=10}">

超神

</c:if>

<c:if test="${killNumber<10}">

还没超神

</c:if>

<br>

c:choose 的用法,运行结果:

<c:choose>

    <c:when test="${killNumber>=10}">

        超神

    </c:when>

    <c:otherwise>

        还没超神

    </c:otherwise>

</c:choose>

<br>

EL表达式eq的用法,运行结果:

${killNumber ge 10"超神":"还没超神" }

更多内容,点击了解: https://how2j.cn/k/jsp/jsp-el/579.html

JSP系列教材 (十一)- EL表达式语言相关推荐

  1. jsp学习(十一,el表达式)

    在学习JSP时看到了${}写法,当时以为就等于<%=%>,其实非常错误 目录 EL表达式介绍 JSP,EL对照表 EL访问Bean的属性 EL表达式介绍 Expression Langua ...

  2. 在JSP2.0中使用EL表达式语言

    EL(表达式语言)是一种数据访问语言,可以方便地访问和处理应用程序数据,而无需使用scriptlet或者请求时(request-time)表达式的值.(不需要使用< % 和%>来获得数据, ...

  3. JDBC+Servlet+JSP整合开发之29-JSP表达式语言(EL)

    –EL 简介  –EL的应用场合  –EL 的基本语法  –EL中的算术运算符  –EL中的关系运算符  –EL中的逻辑运算符 ------------------------------START- ...

  4. java el表达式 导航规则_javaweb之EL表达式语言

    一.基本语法 EL表达式是一种简洁的数据访问语言. 基本形式:${ var} 访问对象的属性及数组的元素 使用"."号访问对象的属性 ${customer.name} 使用&quo ...

  5. jsp java el_jsp之EL表达式

    EL表达式 1. 什么是EL表达式 jsp中的EL(express language)表达式技术:它仅仅是表达式. EL表达式的功能: 获取4个内置对象(域)中的数据,或自定义对象中的数据,或数组.集 ...

  6. JSP复习(二):EL表达式

    2019独角兽企业重金招聘Python工程师标准>>> EL表达式:从JSP2.0开始成为规范,是的原来用scriptlet和表达式完成的事情,EL都能完成 1.配置相关 ${app ...

  7. jsp脚本、jsp标准动作、EL表达式、JSTL标签

    https://blog.csdn.net/gx_hxl/article/details/79032331 https://blog.csdn.net/a731604348/article/detai ...

  8. 如何才能在jsp文件中使用el表达式

    jsp引入el表达式 1.需要的jar包 jstl.jar standard.jar 2.创建一个jsp文件如下 <%@ page language="java" conte ...

  9. jsp中无法识别EL表达式问题

    今天在开发系统时需要在JSP中遍历List<javabean>,其中用到了EL表达式:${item.value} 页面死活不出数据,只显示表达式本身:${item.value}. 页面代码 ...

最新文章

  1. 中国平安“豪赌”科技?从产险业务IT变形计聊起
  2. 这个工具可以快速查看文章引用、获取全文、研究者状态
  3. 4个数字,如何最快找到最小的2个数
  4. 不懂函数能学c语言吗,不会函数能学C语言吗
  5. 技能高考多少分上本科计算机,技能高考多少分上一本
  6. 分布式系统设计时,遵循CAP原则
  7. 文件与i o流java实_JavaFile I/O流
  8. IT牛人---3IE工程师的传奇
  9. 微信用户扫码登录和登录退出的业务逻辑实现(java版)
  10. android-微信sdk
  11. 解决output directory already exists
  12. 程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?
  13. php+ajax上传文件
  14. 河北计算机对口高考数学考试题,2015年河北省对口高考数学试题(含答案)
  15. 偏振光相机3——偏振应用
  16. 竞品分析和产品分析,你究竟搞清楚了么?
  17. Java学习-SpringBoot
  18. MSSQL数据库恢复挂起问题解决
  19. ShaderLab 初学笔记
  20. 使用node nightly每夜编译版

热门文章

  1. fluxion部分功能的使用
  2. 计算机应用基础ppt课件2020,2020年7月网络教育统考《计算机应用基础》演示文稿模拟题试卷操作题...
  3. 5G手机销量止跌回升,或因低价手机拉动
  4. 微信小程序支付:下单账号与支付账号不一致
  5. 关于CSDN会员充值建议
  6. vim插件管理器之Vundle的使用
  7. 了解3dmax面片建模方式
  8. c语言16进制转换为ascii码,C--16进制文本转换为ascii码
  9. 第二期Java选择题
  10. 【面向对象】抽象类和接口