目录


什么是 el 表达式

EL表达式 用于获取数据;

JSP 页面中可以使用 ${标识符} 的形式,通知 JSP引擎 调用 pageContext.findAttribute() 方法,标识符关键字从各个域对象中获取对象。 如果域对象中不存在 标识符 所对应的对象,则返回结果为""(空串),注意不是null

返回 空串 而不是 null,是el表达式的一个迷人之处,我们可不希望在页面上显示null吧;它做了一个转换,因为pageContext.findAttribute() 方法,查不到对象,返回的是null

el表达式 可以理解为是对pageContext.findAttribute() 方法的封装 ;


示例:使用EL表达式获取pageContextrequestsessionapplication域中的数据;

<%--模拟从四个域中,用el表达式取数据--%>
<%--java 代码必须写在脚本片段里面--%> <%
// 先分别将数据存进四个域中
// 以键值对的形式向域中添加数据
// pageContext 域中存数据的时候,关键字不能用 pageContext,
// 因为pageContext 是el表达式自己定义的一个隐式对象,这个在后面的博客(el表达式详细介绍里面)会讲到;
pageContext.setAttribute("page", "我是pageContext中的数据");
request.setAttribute("request", "我是request中的数据");
session.setAttribute("session", "我是session中的数据");
application.setAttribute("servletContext", "我是servletContext中的数据");
%> // 在同一个JSP页面中,使用el表达式取值 <%--el表达式,必须直接写在Jsp页面中,不能写在脚本片段里面--%>
${page}
<br>
${request}
<br>
${session}
<br>
${servletContext}
<br> ------------------------------------------------------
// output:
// 我是pageContext中的数据
// 我是request中的数据
// 我是session中的数据
// 我是servletContext中的数据

示例:使用EL表达式获取Bean属性

首先要知道 Javabean属性这里说的属性可不是 Javabean 类的字段,而是 Javabean 类获取字段的 setXXXgetXXX 方法 ;

EL表达式 中可以使用${标识符.字段} 的形式直接访问 JavaBean对象的属性,不需要再去调用方法。

<%--先往request域里面,放进去一个对象--%>
<jsp:useBean id="person" class="day09.Person" scope="request" ></jsp:useBean>
<%--为对象的字段 赋值--%>
<jsp:setProperty name="person" property="age" value="22"></jsp:setProperty>
<jsp:setProperty name="person" property="name" value="狗蛋"></jsp:setProperty> <%--用el表达式取值--%>
${person.name} : ${person.age} ------------------------
// output:
// 狗蛋 : 22

获取当前WEB应用的名称

${pageContext.request.contextPath}

获取到的地址,自带斜杠,千万不要再地址前面再加 /


el表达式小结

上面只是个 入门级el表达式 教程 ;

千万不要以为 el表达式 只有这么点东西;el表达式 还是很有 、东西的

关于 el表达式 的详细介绍,请查看博主博客 el 表达式详细介绍 (可点击)

EL表达式也可以使用类如${1==1}的形式进行简单的逻辑判断;

一般用EL表达式取数据,通常用 . 号,当 . 号取不出来的时候,就用[ ]取数据;

例如,在取map中的数据的时候,键是数字的时候,.号就取不出来了,这时候该用[‘11’] 这样取 ;


JSTL标签库

JSTLSun 公司开发的一套标签库,使用 JSTL 可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。(这是标签库出现的目的,也符合 jsp 的规范,页面中不出现一句 java 代码)


如何使用JSTL标签库

在页面中使用JSTL标签需要完成以下2个步骤:

  1. 导入jstl.jarstanderd.jar这两个 JSTLjar 文件
  2. JSP 页面中使用<%@tablib url ="xxxx" prifix="xxx" %>元素导入标签库。
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

JSTL标签库中常用标签

<c:foreach var="" item="">
<c:if test="">

  • <c:foreach var="" item=""> 标签事例
// 创建一个list,并向其中添加数据
<%
List<Person> list = new ArrayList<>();
list.add(new Person("小明"));
list.add(new Person("小强"));
list.add(new Person("狗蛋"));
request.setAttribute("list", list);
%> // 遍历list 取值
<c:forEach var="person" items="${list}">
${person.name} <br>
</c:forEach>

<c:foreach > 标签,items属性的值,是一个el表达式,它表示从哪一个对象中遍历取值; var属性的值,是暂时保存每次的取值 ;

在使用 foreach 标签进行迭代 Map 集合的时候,迭代的是 Map 集合进行entrySet返回 set<Map.entry> 集合


  • <c:if test=""> 标签事例
<c:if test="${1==2}">
<%
out.write("你看不到我的");
%>
</c:if>

<c:if > 标签中必须要有 test 属性,<c:if > 标签体的内容是否得到执行,取决于 test 属性中的表达式的值,为真,就执行;注意:test属性中的表达式,直接写普通的表达式不奏效,好像只能写 el表达式


备注:

当然了,上面介绍的都是el表达式和jstl标签库的简单用法;起个快速入门的作用 ;

《over》

(十)EL表达式和JSTL标签快速入门的更多相关文章

  1. jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...

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

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

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

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

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

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

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

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

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

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

  7. JSP和El表达式和JSTL标签库使用

    核心标签库: <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...

  8. EL表达式与JSTL标签map遍历varStatus属性下标使用

    在JSP页面开发中,JSTL标签库迭代标签<c:forEach>为我们迭代遍历数组集合提供了一种选择. 遍历过程中varStatus属性为我们遍历集合提升了很大操作空间. 贴一下具体使用 ...

  9. EL表达式、JSTL标签库

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

随机推荐

  1. Ubuntu14.04 软件安装卸载

    ----常用软件安装 sudo apt-get install vim-gtk //安装vim软件 sudo apt-get install zip //安装解压软件和解压文件 sudo apt-ge ...

  2. vue tab嵌入iframe切换不刷新,相对完整的方案

    说到Vue的简单.便捷.高效,谁用谁喜欢,自然企业应用也来玩一把,三大经典组件:树控件,网格控件,选项卡控件: 本章先说选项卡tab控件的嵌入iframe. 本次主要解决以下问题: 1.tab控件混合 ...

  3. wireshark新手导航

    本篇教你如何开始使用Wireshark.开始本篇之前,请先已经安装完wireshark 3.0.0. 初始界面 启动wireshark,可以看到程序界面主要由以下几部分组成: 窗口标题-window ...

  4. git补充(命令)转自https://github.com/Wasdns/github-example-repo

    在使用命令行进行提交时,通常使用git commit -m '注释信息'来填写commit注释信息,但是-m参数适合单行注释,对于多行的commit注释来说是不合适的.这里推荐使用git commit ...

  5. 关于Scanner调用 sc.nextInt() 异常try后不能二次输入导致死循环问题

    先看下简化的代码,引出问题所在: public class Run { public static void main(String[] args) { Scanner sc = new Scanne ...

  6. VUE -- 对 Element UI table中数据进行二次处理

    时间——日期 后台经常给我们返回的是 时间戳 (例如:1535620671) 这时候我们页面展现的时候需要将时间戳转换为我们要的格式 例如 (YYYY-MM-DD HH:mm:ss) 如果是在Elem ...

  7. VS code写stm32

    第一次在知乎写博客,献丑了. VS code写stm32   今天实在觉得KEIL太丑,突然想到VS code也可以实现STM32代码的编写,遂决定写一个文章,把VScode变成一个STM32的IDE ...

  8. Angular 中的数据交互(get jsonp post)

    一.Angular get 请求数据 Angular5.x 以后 get.post 和和服务器交互使用的是 HttpClientModule 模块. 1.在 app.module.ts 中引入 并注入 ...

  9. sql数据库为null时候ASP语句判断问题

    我有一个表test1,有字段num,字段num有null值,也有空值,也有其他值,我要用asp语句判断我查询出来的num的值是否为null值.应该怎么写 严谨一点,要有两层判断: If IsNull( ...

  10. java判断请求是否ajax异步请求

    java判断请求是否ajax异步请求   解决方法: if (request.getHeader("x-requested-with") != null && re ...