目录


什么是 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. C++类的介绍

    最近在学习SLAM,顺便将C++类的知识复习一下.(其中部分官方定义和程序设计方法来源于西北工业大学魏英老师)   1.类的定义: 是用户自定义的数据类型. C++一个类定义的形式如下: class ...

  2. 二分图匹配——p3386 p2071 p2319 p1129(矩阵游戏)

    ---恢复内容开始--- 二分图,就是给你一个图,可以将点分为两部分,每一部分的点都能唯一映射到另一个集合里,也就是有连边: 注:以下转自 http://blog.csdn.net/dark_scop ...

  3. 链家网爬虫同步VS异步执行时间对比

    异步执行时间 import time import asyncio import aiohttp from lxml import etree start_time = time.time() asy ...

  4. c++ 将字符串转换为数字

    int string2int(string x); int string2int(string x){ int a; string res=x; stringstream ss; ss << ...

  5. Docker:Docker Compose 详解

    Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...

  6. The First Python man in Github

    Python date VS(可视化了一下前几名) 查了下Github上星星最多的Python man 或许这就是目标吧 刚刚改了github.

  7. MediaPlayer: BufferQueue has been abandoned 解决方案

    最近在做一个播放器,需要实现一个从小屏切换到全屏的效果,我用的是TextureView + MediaPlayer 的方式去实现,当需要切换成全屏时,我在 TextureView 的 onSurfac ...

  8. JS-数组与伪数组

    数组与伪数组 把符合以下条件的对象称为伪数组: 具有length属性 按索引方式存储数据 不具有数组的push,pop等方法 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行 ...

  9. PropertyValuesHolder学习

    package com.loaderman.customviewdemo; import android.animation.ObjectAnimator; import android.animat ...

  10. 持续集成和部署工具GOCD

    如果大家使用过Jenkins那么相信大家对于持续集成非常熟悉.今天要给大家介绍的是另一个非常强大的CD工具GoCD官方对其也称之为GO但是要明白他和go语言golang是没有多大关系的,他是使用jav ...