expresion language表达式语言

可以输出表达式的值。跟jsp的表达式脚本一样。计算表达式的值后输出。 
 EL表达式出现的目的是为了使JSP写起来更加简单,让jsp的代码更佳简化。

1、搜索数据的顺序:pageContent、request、session、Application

2、获取javaBean普通属性、数组属性、List集合属性,以map属性中的数据。

${  user.username  }    // 获取user对象中。username属性值

${  list[0]  }                     // 访问有序集合(或数组)中给定索引的元素

${  map.key  }                        // 访问map集合中指定key的属性值

${      map[“key”]       }                 // 访问特殊字符串的key的属性值

<%--访问 对象的username 属性--%>

user对象的username属性值---->>>>${ user.username }<br/><br/>

<%--访问user对象中数组的第二个元素--%>

user对象中phones数组的第二个元素-------->>>>${ user.phones[1] }<br/><br/>

<%--访问 list集合 中第一个元素--%>

list集合中第一个元素-------->>>>>${ user.strList[0] }<br/> <br/>

<%--访问 user对象中map集合的aaa的属性值 --%>

user对象中map集合中aaa属性的值----->>>>>${ user.map.aaa }<br/><br/>

empty运算是判断一个对象或者集合是否为空。返回boolean值。

对象为null时,返回true

如果是空的字符串,返回true

如果是空的Object数组(Object数组.length == 0),返回true

空的集合,返回true

空的map,返回true

<%--request.getAttribute("msg") == null ? "请输入用户名和密码" :request.getAttribute("msg")--%>

等效于  ${empty requestScope.msg ? "请输入用户名和密码":requestScope.msg}

 还有 not empty

            <c:choose>
<c:when test="${not empty sessionScope.cart}">
<c:forEach items="${sessionScope.cart.items}" var="item">
<tr>
<td>${item.value.name}</td>
<td>${item.value.count }</td>
<td>${item.value.price }</td>
<td>${item.value.totalMoney }</td>
<td><a href="#">删除</a></td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<td colspan="5"><a href="index.jsp">购物车为空,去购物商品吧!</a></td>
</c:otherwise>
</c:choose>
<c:when> 配合<c:choose>一起使用,类似switc语句 

1.4、EL表达式中11个隐含对象。

EL表达式 中隐含11个对象,这11个对象我们都可以直接使用!!!

隐含对象

类型

说明

pageContext

javax.servlet.jsp.PageContext

就是JSP页面中的pageContext对象

pageScope

java.util.Map<String,Object>

Page范围属性名和属性值

requestScope

java.util.Map<String,Object>

Request范围属性名和属性值

sessionScope

java.util.Map<String,Object>

Session范围属性名和属性值

applicationScope

java.util.Map<String,Object>

Web应用范围属性名和属性值

param

java.util.Map<String,String>

对应一个请求参数

paramValues

java.util.Map<String,String[]>

对应一组请求参数

header

java.util.Map<String,String>

请求头

headerValues

java.util.Map<String,String[]>

请求头返回字符数组

cookie

java.util.Map<String, Cookie>

获取某个cookie对象

initParam

java.util.Map<String, String>

获取应用<context-param>初始化参数

1.5、EL表达式获取域对象中的数据(****重点)

pageScope                       <=== 对应 ===>              pageContext        域中的属性

requestScope                  <=== 对应 ===>              request                域中的属性

sessionScope                   <=== 对应 ===>              session                 域中的属性

applicationScope               <=== 对应 ===>              ServletContext    域中的属性

JSTL标签库

JSTL标签库 全称是指 JSP Standard Tag Library  JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。

EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。

JSTL由五个不同功能的标签库组成。

功能范围

URI

前缀

核心标签库--重点

http://java.sun.com/jsp/jstl/core

c

格式化

http://java.sun.com/jsp/jstl/fmt

fmt

函数

http://java.sun.com/jsp/jstl/functions

fn

数据库(不使用)

http://java.sun.com/jsp/jstl/sql

sql

XML(不使用)

http://java.sun.com/jsp/jstl/xml

x

            在jsp标签库中使用taglib指令引入标签库
  CORE 标签库

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

  XML 标签库

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

  FMT 标签库 

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

  SQL 标签库

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

  FUNCTIONS 标签库

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

 平时使用最多的是核心库:

  CORE 标签库

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

核心库几个常用的标签:

<c:out>标签

<c:out>标签用来输出一个表达式的结果,与<%= %>作用相似。

举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value="${customer.address.street}">。

<c:out>标签会自动转义特殊字符,所以它们不会被当做标签来处理。

value:要输出的内容

<body>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("username", "wzg168");
map.put("data", "<b>这是b标签</b>");
pageContext.setAttribute("map", map);
%>
username:<c:out value="${ map.username }" default="默认值" /><br/>
data-escapeXml=true:<c:out value="${ map.data }" default="默认值" escapeXml="true"/><br/>
data-escapeXml=false:<c:out value="${ map.data }" default="默认值" escapeXml="false"/><br/>
abc:<c:out value="${ map.abc }" default="默认值" /><br/>
</body>

<c:set>标签 用于 添加 或 修改 域中的属性。

<c:remove>标签:从域对象中移除一个属性。

<body>
<!-- 添加一个属性 -->
<c:set scope="page" var="abc" value="abc_Value"/>
添加后:${ pageScope.abc }<br/>
<!-- 删除abc属性 -->
<c:remove scope="page" var="abc"/>
删除后:${ pageScope.abc }<br/>
</body>

<c:if>标签 判断表达式的值,如果表达式的值为 true 则执行其主体内容。

<body>
<!-- 判断 12 == 12 -->
<c:if test="${ 12 == 12 }">
<h1>12 == 12 为真</h1>
</c:if>
<!-- 把判断的结果保存到作用域中 -->
<c:if test="${ 12 == 13 }" scope="page" var="a"></c:if>
<%-- 输出page作用域中的a对象 --%>
<c:out value="${ pageScope.a }"></c:out>
</body>

<c:choose>、<c:when>、<c:otherwise>标签(常用****)

<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。

switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。

<body>
<%
// 保存一个分数
pageContext.setAttribute("score", 90);
%>
<%-- 开始判断 --%>
<c:choose>
<%-- 如果成绩大于等于 90分 --%>
<c:when test="${ pageScope.score >= 90 }">
成绩为A
</c:when>
<%-- 如果成绩大于等于 80分 --%>
<c:when test="${ pageScope.score >= 80 }">
成绩为B
</c:when>
<%-- 如果成绩大于等于 70分 --%>
<c:when test="${ pageScope.score >= 70 }">
成绩为C
</c:when>
<%-- 如果成绩大于等于 60分 --%>
<c:when test="${ pageScope.score >= 60 }">
成绩为D
</c:when>
<%-- 其他情况 --%>
<c:otherwise>
成绩为E,不及格
</c:otherwise>
</c:choose>
</body>

<c:forEach>标签(****重点)

<c:forEach>标签是迭代一个集合中的对象-可以是数组,也可以是list,也可以是map对象。

<c:url>标签:

主要是用来生成一个url地址,添加到一个域属性中。还可以在生成地址的同时添加请求参数。

如果请求的参数中带有中文,还会自动的做编码的操作

<body>
<!-- 1) 使用相对路径生成url保存到 (只能在当前工程下) -->
<c:url var="url1" value="/a.jsp" scope="page" >
<c:param name="username" value="wzg168"></c:param>
<c:param name="data" value="中文"></c:param>
</c:url>
${ pageScope.url1 }<hr/>
<!-- 2) 使用绝对路径生成url保存到 (一定要以斜杠打头,可以修改上下文路径) -->
<c:url var="url2" value="/b.jsp" scope="page" context="/day08" />
${ pageScope.url2 }<hr/>
<!-- 3) 生成url 直接输出 (只能有value属性和context属性) -->
<c:url value="/c.jsp" context="/day20">
<c:param name="asd" value="asd"></c:param>
</c:url>
</body>

<c:redirect>标签

作用:<c:redirect>标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param

<body>
<%-- 重定向到http://www.baidu.com --%>
<c:redirect url="http://www.baidu.com" />
</body>

运行结果:

  页面一运行,就会直接重定向到百度http://www.baidu.com

EL表达式的最主要功能就是从域对象中获取数据,并且输出.

EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。两者结合这样使得整个jsp页面变得更佳简洁。

EL表达式和JSTL标签库的更多相关文章

  1. JSP、EL表达式、JSTL标签库干货(建议收藏)

    JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...

  2. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...

  3. Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库

    一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成se ...

  4. EL表达式、JSTL标签库

    一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...

  5. Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)

    一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...

  6. JavaWeb基础—EL表达式与JSTL标签库

    EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一 ...

  7. 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!

    jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...

  8. jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar

    spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...

  9. EL表达式与JSTL标签库(一)

    1.JSTL概述 JSTL标签库由标签库和EL表达式两个部分组成.JSTL标准标签库(Java Server Page Standard Tag Library),用来解决创建的页面的操作问题,包括输 ...

随机推荐

  1. 怎样从本地删除git远程仓库里面的文件

    git是大家通用的一种版本控制系统,便捷高效,各种命令需要牢记,今天小渔介绍给大家的是git的删除命令,即将文件从远程仓库中删除的操作. 方法/步骤     首先,我们打开自己的本地GIT仓库,在根目 ...

  2. 布局:高度已知,布局一个三栏布局,左栏和右栏宽度为200px,中间自适应

    需求:高度已知为200px,写出三栏布局,左栏和右栏各位200px,中间自适应,如下图所示: 方法一:float浮动布局 原理是:定义三个区块,需要注意的是中间的区块放在右边区块的下面,统一设置高度为 ...

  3. Excel函数(不定期持续更新)

    1.COUNTIF函数 COUNTIF函数用来计算单元格区域内符合条件的单元格个数. COUNTIF函数只有两个参数 COUNTIF(单元格区域,计算的条件) 例如:计算上海市的数量

  4. SpringMVC+Spring+Mybatis框架集成

    一.基本概念 1.Spring      Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-O ...

  5. [BJWC2011]元素

    嘟嘟嘟 题中说选的数的编号亦或和不能为0,也就是在这个集合中,不能用不同的选取方案亦或出相同的值.由此联想到线性基的一个性质是,每一个数都能由线性基中特定的一些数亦或得到. 所以我们就是要求出这些数的 ...

  6. docker in docker 出现 libltdl.so.7 问题

    # docker ps -adocker: error while loading shared libraries: libltdl.so.7: cannot open shared object ...

  7. 错误:java.io.FileNotFoundException: /storage/emulated/0/Documents/eclipse-inst-win64.exe

    在Android服务的最佳实例中:https://www.cnblogs.com/hh8888-log/p/10300972.html,在最后运行的时候,点击Start Download按钮总是会报一 ...

  8. day88

    ContentType 场景需求:比方说我们现有两种商品,但是他们对应着一个价格策略表,为了防止数据库的浪费,我们在价格策略中加入一个表名字段,一个表明对应的id字段,这样的设计既优化了数据库,还不怕 ...

  9. CF58E Expression 搜索

    题目传送门:http://codeforces.com/problemset/problem/58/E 题意:给出一个形如$x+y=z$(不一定正确)的式子,试输出一个$a+b=c$的式子,满足:$1 ...

  10. (转)Putty server refused our key的三种原因和解决方法

    原文 上一篇博文介绍了使用Putty免密码登录,我后面试了另一台虚拟机,结果putty显示错误server refused our key(在linux下则表现为仍需要输入密码),搜索了下,很多人都遇 ...