9.EL表达式 和 JSTL核心标签库
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核心标签库的更多相关文章
- EL表达式和JSTL核心标签库
1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某 ...
- EL表达式和JSTL标准标签库
一.EL表达式 什么是EL表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部 减少jsp脚本的编写 EL出现的目的是要替代jsp页面中脚本的编写. EL表达式的作用 EL最主 ...
- EL表达式 与 JSTL标准标签库
目录 EL表达式 什么是EL表达式 作用 EL内置11对象 EL执行表达式 JSTL 什么是JSTL JSTL标准标签库有5个子库 把JSTL标签库jar包引入工程当中 if标签 foreach标签 ...
- Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架
JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...
- jsp之jstl核心标签库
JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...
- JSTL 核心标签库 使用
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
- JSTL 核心标签库 使用(C标签)
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
- JSTL核心标签库使用
JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...
- 【JSP】JSTL核心标签库的使用方法和示例
JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...
随机推荐
- ps填充颜色快捷键
一:选中区域: 二:填充前景色快捷键是“Alt+Delete”: 三:填充背景色的键盘快捷键是“Ctrl+Delete”:
- 反向代理远端 单台tomcat 使用ip+端口
.环境 nginx 10.1.1.161 公网:123.58.251.166 tomcat 10.1.1.103 .tomcat 配置 [root@host---- ~]# netstat -tnlp ...
- 13 Ways Companies Do Whatsapp Marketing & Support (May 2019)
13 Ways Companies Do Whatsapp Marketing & Support (May 2019) By Iaroslav Kudritskiy We're livin ...
- Linux特基础的知识(接上一条)
grep:文本过滤工具(找到要找的文本) print lines matching a pattern例: 打印 行 匹配 一个 模式/样式[root@oldboyedu /opt]# grep &q ...
- Bootstrap 控制台示例
1.打开https://getbootstrap.com/docs/4.3/examples/ 2.选择Dashboard 3.右键查看源代码,另存为 4.通过源代码界面下载JS和CSS 5.修改绝对 ...
- Django各个文件中常见的模块导入
app01 app01 urls.py from django.conf.urls import url from django.contrib import admin from admins im ...
- nginx处理请求的11个阶段
Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是 post-read.server-rewrite.find-config.rewrite.post-rewrite.preacc ...
- shell 监控
#!/bin/shsource /etc/profileserverName=$1dingDingName=$2 #获取内存情况memory=(`free | awk 'NR==2{print $2, ...
- Python基础总结之第十天开始【认识模块、包和库】(新手可相互督促)
每天都有一种备课的赶脚~~~ 什么是模块? 在实际的开发过程中,代码量肯定有成千上万行的代码,甚至十几万行代码也很正常吧... 那么这么多的代码如果放在一个文件中,肯定是很不合适的,为了以后程序的编写 ...
- 【leetcode算法-简单】9. 回文数
[题目描述] 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解释: ...