本文共 4613 字,大约阅读时间需要 15 分钟。
EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。
语法:
${expr}
使用EL表达式获取作用域数据:
获取的是pageContext、request、session、application四个对象中的数据,其他数据一概不理会。找到了则获取返回,找不到则什么都不做,也不报错。
获取请求数据:
request对象存储了请求数据---->param.键名 返回值 request对象存储了请求数据---->paramvalues.键名 返回数组获取自定义数据(setAttribute()放进去的):
${键名} 返回键名所对应的值作用域查找顺序:
<% request.setAttribute("str", "hello world"); %> <%-- 取出普通字符串 --%> ${str }
页面输出:
创建Adress类和User类:
package pers.zhang.pojo;public class Address { private String pre; private String city; private String town; public String getPre() { return pre; } public void setPre(String pre) { this.pre = pre; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getTown() { return town; } public void setTown(String town) { this.town = town; } public Address(String pre, String city, String town) { super(); this.pre = pre; this.city = city; this.town = town; } public Address() { super(); } @Override public String toString() { return "Address [pre=" + pre + ", city=" + city + ", town=" + town + "]"; } }
package pers.zhang.pojo;public class User { private int uid; private String uname; private String fav; private Address addr; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getFav() { return fav; } public void setFav(String fav) { this.fav = fav; } public Address getAddr() { return addr; } public void setAddr(Address addr) { this.addr = addr; } public User(int uid, String uname, String fav, Address addr) { super(); this.uid = uid; this.uname = uname; this.fav = fav; this.addr = addr; } public User() { super(); } @Override public String toString() { return "User [uid=" + uid + ", uname=" + uname + ", fav=" + fav + ", addr=" + addr + "]"; }}
<% Address addr = new Address("河南", "商丘", "虞城县"); User u = new User(1,"张三","足球",addr); request.setAttribute("user", u); %> <%-- 取出对象 --%> ${user } ${user.uname } ${user.addr } ${user.addr.city }
页面显示:
<% Address addr1 = new Address("河南1", "商丘1", "虞城县1"); Address addr2 = new Address("河南2", "商丘2", "虞城县2"); Address addr3 = new Address("河南3", "商丘3", "虞城县3"); List list = new ArrayList(); list.add(addr1); list.add(addr2); list.add(addr3); request.setAttribute("list", list); %> <%-- 取出list --%> ${list} ${list[0] } ${list[0].city } ${list[1].town}
页面显示:
<% Address addr = new Address("河南1", "商丘", "虞城县"); User u = new User(1, "小黑", "中国足球", addr); Mapmap = new HashMap (); map.put("user", u); request.setAttribute("map", map); %> <%-- 取出map --%> ${map} ${map.user} ${map.user.uname} ${map.user.addr.city}
页面显示:
隐含对象 | 描述 |
---|---|
pageScope | page作用域 |
requestScope | request作用域 |
sessionScope | session作用域 |
applicationScope | application作用域 |
param | Request对象的参数,字符串 |
paramValues | Request对象的参数,字符串集合 |
header | HTTP信息头,字符串 |
headerValues | HTTP信息头,字符串集合 |
initParam | 上下文初始化参数 |
cookie | Cookie值 |
pageContext | 当前页面的pageContext |
pageScope,requestScope,sessionScope,applicationScope
获取JSP中域中的数据param,paramValues
接收参数,相当于request.getParameter() rrquest.getParameterValues()header,headerValues
获取请求头信息,相当于request.getHeader(name)initParam
获取全局初始化参数,相当于this.getServletContext().getInitParameter(name)cookie
WEB开发中cookie,相当于request.getCookies()—cookie.getName()—cookie.getValue()pageContext
WEB开发中的pageContext,pageContext获得其他八大对象${pageContext.request.contextPath}
获取Web应用名称EL表达式支持大部分Java所提供的算数和逻辑操作符:
操作符 | 描述 |
---|---|
. | 访问一个属性或者一个映射条目 |
[] | 访问一个数组或者链表元素 |
() | 组织一个子表达式以改变优先级 |
+ | 加 |
- | 减或负 |
* | 乘 |
/ or div | 除 |
% or mod | 取模 |
== or eq | 测试是否相等 |
!= or ne | 测试是否不等 |
< or lt | 测试是否小于 |
> or gt | 测试是否大于 |
<= or le | 测试是否小于等于 |
>= or ge | 测试是否大于等于 |
&& or and | 测试逻辑与 |
or or | |
!or not | 测试取反 |
empty | 测试是否空值 |
<% User u = new User(); request.setAttribute("user", u); request.setAttribute("value", null); %>EL表达式的逻辑运算
${a + b}--${1 + 2}--${1 * 2}--${4 / 2}--${4 - 2}--${4 % 3}--${4 == 4}--${4 > 2}--${1 == 1 ? '男':'女'} <%-- 注意: +表示加法运算,不表示字符链接。使用EL表达式进行字符链接会报错。 --%> <%-- 自动转换为数字 --%>> ${1 + "2"}EL表达式的空值判断
<%-- --%> ${empty user} ${empty value}
页面显示:
转载地址:http://vjsqb.baihongyu.com/