EL表达式

1./*获取数据*/

  (某个web域中的对象,访问javabean的属性、访问List集合、访问Map集合、访问数组)

 <html>
<head>
<title>el表达式</title>
</head> <body> <---------------------el表达式---(找不到数据的话,返回"",不是null)---------------------------------><br/>
<%
String data = "data";
request.setAttribute("data", data);
%> ${data } <br/> <!-- 相当于 psgeContext.findAttribute--> <---------------------el表达式---(先找到request域中的person对象,在通过这个person对象,拿到bean的属性)---------------------------------><br/>
<%
Person p = new Person();
p.setName("elName");
request.setAttribute("person", p);
%> ${person.name }<br/> <-------------el表达式--(从复杂bean中取出数据)-----------------><br/>
<%
Person p1 = new Person();
Adress a = new Adress();
a.setCity("上海");
p1.setAdress(a); request.setAttribute("p1", p1);
%> ${p1.adress.city }<br/> <-------------el表达式--(从list中取出数据)-----------------><br/>
<%
List list = new ArrayList();
list.add(new Person("aaa"));
list.add(new Person("bbb"));
list.add(new Person("ccc")); request.setAttribute("list", list);
%> ${list[1].name }<br/> <-------------el表达式--(从map中取出数据)-----------------><br/>
<%
Map map = new HashMap();
map.put("aa", new Person("111"));
map.put("bb", new Person("222"));
map.put("cc", new Person("333")); request.setAttribute("map", map);
%>
${map.aa.name }<br/> <!-- 用el表达式在取数据时,通常用.号,如果.号取不出来,就用[] 如 map[111].name --> <-------------el表达式--(得到当前web应用的名称)(动态获取工程名称)(应用:如超链接中,需要写工程名)-----------------><br/> ${pageContext.request.contextPath} <br/> </body>
</html>

2./*执行运算*/

  在JSP页面执行一些简单的运算 (${user==null})

  empty运算符:检查对象是否为 null 或 “空”

  二元表达式:${user !=null?user.name:""}

3./*获取WEB开发常用对象*/ (使用$的时候,会先判断要获取的对象 是否是已经定义了的隐式对象)

EL表达式定义了一些隐式对象 (11个) ${隐式对象名称} --获得对象的引用

  1.pageContext (对应JSP页面中的pageContext对象)

  2.pageScope (代表page域中用户保存属性的Map对象)

  3.requestScope

  4.sessionScope

  5.applicationScope

  6.param (表示一个保存了所有请求参数Map对象)(表单回显可能用到)

  7.paramValues (表示一个保存了所有请求参数的Map对象,跟上面不同,这个返回的是String[])

  8.header (表示一个保存了所有http请求头字段的Map对象)

  9.headerValues

  10.cookie (表示一个保存了所有cookie的Map对象)

  11.initParam (表示一个保存了所有web应用初始化参数的Map对象)

  (通过得到的Map对象,然后指定该Map对象的关键字 就能拿到对应的值)

4./*调用JAVA方法*/

  EL表达式语法允许开发人员都已自定义函数,以调用Java类的方法

  示例:${prefix:method(params)}

    1.在EL表达式中调用的方法只能是 /*静态方法*/。

    2.这个Java类的静态方法需要在TLD文件中描述,才可以被EL表达式调用

    3.EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能

(使用EL函数移除页面中的Java代码和使用自定义标签移除java代码的区别)

/*EL函数无法移除与WEB开发相关的代码 (如request.setAttrbute())*/

EL函数库 /*针对字符串的一些常见操作*/(sun公司针对一些字符串的常见处理定义了一套EL函数库供开发者使用)

  在页面中使用JSTL定义的EL函数:(注意:${fn:substring("www.it315.org", 4, 9) } 结果为it315 而不是 it315. )

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

  /*如果需要在JSP页面中对字符串进行一些常见操作,首先考虑是否可以用到sun公司提供的EL函数库(fn.tld)*/

  /*如果sun公司的EL函数库没有,就需要自己写 自定义标签或者写一个EL函数*/

/*注意:1.$不能嵌套使用 用一个就可以了   2.$后面不能有空格 要直接接{},不然没有作用*/

/*JSTL标签库*/

/*核心标签库 (开发里面常用的标签)*/

  c.tld (standard.jar)文件里面描述的就是核心标签,平常用的<c:if>之类用c开头的,都是核心标签库中的

  1.<c:out> 标签 (输出文本)

  <c:out value="<a href=''>点点</a>" default="缺省值(如果value为空,没有,就使用default里面的值)" escapeXml="true"/>

   escapeXml属性会将文本转义后输出(实现类似html转义标签的作用)

  2.<c:set>标签 (可以往域里面存东西,往javabean里面存东西,往Map里面存东西)

  <c:set var="data" value="xxx" scope="page"/> ${data}

  <c:set property="name" value="uuuu" target="${p}"/> ${p.name}

  Map map = new HashMap();

  request.setAttribute("map",map);

  <c:set property="dd" value="xxx" target="${map}" /> ${map.dd}

  (这里的property,相当于Map中的关键字,根据这个关键字,来确定对应的值)

  3.<c:remove> 标签 (删除域中属性)

  4.<c:catch> 标签 (抓住嵌套在标签中的内容抛出的异常)

  <c:catch var="myex"> <%会抛出异常的代码%> ${myex.message}

  

  5.<c:if> 标签

  <c:if var="sss" test="${user==null}" scope="page"> ${sss}

  (看到 var 属性 就代表着 将标签的处理结果以var的值为关键字存在某个域中 ,具体是存在哪个域中,用scope去指定)

  6.<c:forEach> 标签

  <c:forEach var="num" beign="1",end="9" step="1"> ${num} (用来做分页的时候会用到)

  forEach 实现表格间色显示 <c:forEach var="str" items="${list}" varStatus="status"> ( ${status} 获取到了一个对象,这个对象,这个对象记住了当前是第几次迭代 )  

  <tr class="${status.count%2==0?'even':'odd'}"> <td>${str}</td> </tr> (用class来为奇数 偶数 赋不同的颜色)

  7.<c:url> 标签(实现URL的重写(将会话标识号以参数形式附加在URL地址上))

  要想使用这个<c:url>生成超链接,就必须配合HTML元素<a>使用.

  <a href="

    <c:url value="./testParamImported.jsp">

    <c:param name="username" value="yangmu"></c:param>

    <c:param name="password" value="hello"></c:param>

    </c:url>

  ">跳转页面</a>

  <c:url var="index" value="/index.jsp">

    <c:param name="name" value="中国"></c:param> (使用param标签 在地址后面带上参数,可以是中文)

  </c:url>

  <a href="${index}">购买</a> (1.会自动带上工程名 2.会自动加上session的id号)

  8.<c:forTokens> 标签 (以指定字符分隔字符串)

  <c:forTokens var="tokens" items="${data}" delims=","> (以逗号分隔存在某个域中的字符串,每分割出一个字符串,就将其存到var中)

    ${tokens}

  </c:forTokens>

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.javaweb.domain.Person" %>
<%@ page import="com.javaweb.domain.Adress" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用jstl+el完成集合迭代</title>
</head> <body>
<----------------------List集合的迭代---------------------------> <br/>
<%
List list = new ArrayList();
list.add(new Person("aaa"));
list.add(new Person("bbb"));
list.add(new Person("ccc")); request.setAttribute("list", list);
%> <c:forEach var="person" items="${list }">
${person.name} <br/>
</c:forEach> <----------------------Map集合的迭代---------------------------> <br/>
<%
Map map = new HashMap();
map.put("aa", new Person("111"));
map.put("bb", new Person("222"));
map.put("cc", new Person("333")); request.setAttribute("map", map);
%> <c:forEach var="entry" items="${map }">
${entry.key } : ${entry.value.name} <br/>
</c:forEach> <!-- jstl if标签 -->
<!-- 代表用户登录了 -->
<c:if test="${user!=null }">
欢迎您
</c:if> <c:if test="${user==null }">
用户名:<input type="text">
密码:<input type="text">
</c:if> </body>
</html>

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

  1. EL表达式和JSTL核心标签库

    1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某 ...

  2. EL表达式和JSTL标准标签库

    一.EL表达式 什么是EL表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部 减少jsp脚本的编写 EL出现的目的是要替代jsp页面中脚本的编写. EL表达式的作用 EL最主 ...

  3. EL表达式 与 JSTL标准标签库

    目录 EL表达式 什么是EL表达式 作用 EL内置11对象 EL执行表达式 JSTL 什么是JSTL JSTL标准标签库有5个子库 把JSTL标签库jar包引入工程当中 if标签 foreach标签 ...

  4. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架

    JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...

  5. jsp之jstl核心标签库

    JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...

  6. JSTL 核心标签库 使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  7. JSTL 核心标签库 使用(C标签)

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  8. JSTL核心标签库使用

    JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...

  9. 【JSP】JSTL核心标签库的使用方法和示例

    JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...

随机推荐

  1. 005-html+js+spring multipart文件上传

    一.概述 需求:通过html+js+java上传最大500M的文件,需要做MD5 消息摘要以及SHA256签名,文件上传至云存储 1.1.理解http协议 https://www.cnblogs.co ...

  2. 使用Eclipse对SpringBoot项目如何进行打包部署

    1,打包概要介绍: 自己做了个小demo,突然想练一下如何打包发布,期间出现了两个错误,第一个是加载不到主类,第二个是加载不到jsp文件,一会会把这两个问题一一陈述,以及解决方法. 1.1,先检查po ...

  3. JavaScript函数中的this四种绑定形式

    this的默认绑定.隐式绑定.显示绑定.new绑定 <script> //全局变量obj_value ; //1.window调用 console.log(`*************** ...

  4. JAVA 基础编程练习题25 【程序 25 求回文数】

    25 [程序 25 求回文数] 题目:一个 5 位数,判断它是不是回文数.即 12321 是回文数,个位与万位相同,十位与千位相同. package cskaoyan; public class cs ...

  5. java、python、golang等开发语言如何快速生成二维码?

    免费二维码生成途径非常多!比如比较有名的草料二维码,如果只是简单的使用,用它就足够了.但是如果想大规模的生成,那就不太合适了.再者很多工具都没办法在二维码中加入logo(像微信二维码一样). 接下来, ...

  6. 用JavaScript来实现单例模式

    首先,了解一下什么是单例模式,这里我直接把菜鸟教程中的定义给copy过来: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供 ...

  7. 如何快速在Github找到你想要的东西

    众所周知 Github是全球最大的xx交友平台,虽然被收购了.但是不并没有什么影响. 使用Git可以做很多事,在这里不再缀述,上面的资源也是多种多样,应有尽有 对于这样一个平台,我们想快速找到自己需要 ...

  8. selenium3关于ddt驱动之读取json文件。。。

    from selenium import webdriver import ddt import time import unittest """ DDT(驱动.json ...

  9. 最新 央视网java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.央视网等10家互联网公司的校招Offer,因为某些自身原因最终选择了央视网.6.7月主要是做系统复习.项目复盘.LeetCo ...

  10. [转帖]nginx 禁止ip访问以及禁止post方法的简单方法

    nginx禁止IP访问站点的设置方法 http://www.512873.com/archives/471.html http://www.512873.com/archives/312.html c ...