文章目录
Tips
${表达式}
-
Expression Language,表达式语言
-
作用:代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出,相对而言更简洁
-
EL 表达式在输出 null 值的时候,输出空串
jsp 表达式脚本输出 null 值的时候,输出 null 字符串。
-
jsp 中四大域对象都存储同名key变量时,按照四个域的从小到大的顺序去进行搜索,找到就输出,除非特殊场景,否则只用request
-
EL 表达式获取某值的时候,不是找属性名,而是找该属性对应的get方法,就算没有 该属性,有get方法也可以
获取 表达式 结果/备注 对象的属性 ${p.name} 数组 ${p.phones} 数组的地址 数组的某个属性值 ${p.phones[2]} List 集合 ${p.cities} [元素1,元素2,元素3,元素4] List 集合中个别元素值 ${p.cities[2]} Map 集合 ${p.map} {key1=value1,key2=value2,key3=value3} Map 集合中某个 key 的值 ${p.map.key}
| 关系运算符 | 说 明 | 范 例 | 结果 |
|---|---|---|---|
| == 或 eq | 等于 | ${ 5 == 5 } 或 ${ 5 eq 5 } | true |
| != 或 ne | 不等于 | ${ 5 !=5 } 或 ${ 5 ne 5 } | false |
| < 或 lt | 小于 | ${ 3 < 5 } 或 ${ 3 lt 5 } | true |
| > 或 gt | 大于 | ${ 2 > 10 } 或 ${ 2 gt 10 } | false |
| <= 或 le | 小于 | 等于 ${ 5 <= 12 } 或 ${ 5 le 12 } | true |
| >= 或 ge | 大于 | 等于 ${ 3 >= 5 } 或 ${ 3 ge 5 } | false |
| 逻辑运算符 | 说 明 | 范 例 | 结果 |
|---|---|---|---|
| && 或 and | 与运算 | ${ 12 == 12 && 12 < 11 } 或 ${ 12 == 12 and 12 < 11 } | false |
| || 或 or | 或运算 | ${ 12 == 12 || 12 < 11 } 或 ${ 12 == 12 or 12 < 11 } | true |
| ! 或 not | 取反运算 | ${ !true } 或 ${not true } | false |
| 算数运算符 | 说 明 | 范 例 | 结果 |
|---|---|---|---|
| + | 加法 | ${ 12 + 18 } | 30 |
| - | 减法 | ${ 18 - 8 } | 10 |
| * | 乘法 | ${ 12 * 12 } | 144 |
| / | 或 div 除法 | ${ 144 / 12 } 或 ${ 144 div 12 } | 12 |
| % | 或 mod 取模 | ${ 144 % 10 } 或 ${ 144 mod 10 } | 4 |
可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false
以下几种情况为空:
- 值为 null 值的时候,为空
- 值为空串的时候,为空
- 值是 Object 类型数组,长度为零的时候
- list 集合,元素个数为零
- map 集合,元素个数为零
同java三元运算
.运算 和 []运算符-
.点运算:可以输出 Bean 对象中某个属性的值
-
[]中括号运算,可以输出有序集合中某个元素的值,单双引号都行
并且[]中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。
request.setAttribute("abc.def", "zhangsan");
//用.无法取值
//${requestScope.abc.def}
${requestScope["abc.def"]}
<% Map隐含对象 11个隐含对象map = new HashMap (); map.put("a.a.a", "aaaValue"); map.put("b+b+b", "bbbValue"); map.put("c-c-c", "cccValue"); request.setAttribute("map", map); %> ${ map['a.a.a'] }
${ map["b+b+b"] }
${ map['c-c-c'] }
| 变量 | 类型 | 作用 |
|---|---|---|
| pageContext | PageContextImpl | 它可以获取 jsp 中的九大内置对象 |
| pageScope | Map | 它可以获取 pageContext 域中的数据 |
| requestScope | Map | 它可以获取 Request 域中的数据 |
| sessionScope | Map | 它可以获取 Session 域中的数据 |
| applicationScope | Map | 它可以获取 ServletContext 域中的数据 |
| param | Map | 它可以获取请求参数的值 |
| paramValues | Map | 它也可以获取请求参数的值,获取多个值的时候使用。 |
| header | Map | 它可以获取请求头的信息 |
| headerValues | Map | 它可以获取请求头的信息,它可以获取多个值的情况 |
| cookie | Map | 它可以获取当前请求的 Cookie 信息 |
| initParam | Map | 它可以获取在 web.xml 中配置的上下文参数 |
获取 jsp 中的九大内置对象
可以直接pageContext.对象.方法,也可以 pageContext.setAttribute为对象起名后直接用
<% pageContext.setAttribute("req", request); %>
<%=request.getScheme() %>
1.协议: ${ req.scheme }
2.服务器 ip:${ pageContext.request.serverName }
3.服务器端口:${ pageContext.request.serverPort }
4.获取工程路径:${ pageContext.request.contextPath }
5.获取请求方法:${ pageContext.request.method }
6.获取客户端 ip 地址:${ pageContext.request.remoteHost }
7.获取会话的 id 编号:${ pageContext.session.id }
获取四个特定域中的属性
| EL表达式 | 域 |
|---|---|
| pageScope | pageContext 域 |
| requestScope | Request 域 |
| sessionScope | Session 域 |
| applicationScope | ServletContext 域 |
<%
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
${pageScope.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
param 与 paramValues
输出请求参数 username 的值:${ param.username }
输出请求参数 password 的值:${ param.password }
输出请求参数 username 的值:${ paramValues.username[0] }
输出请求参数 hobby 的值:${ paramValues.hobby[0] }
输出请求参数 hobby 的值:${ paramValues.hobby[1] }
header 与 headerValues
输出请求头【User-Agent】的值:${ header['User-Agent'] }
输出请求头【Connection】的值:${ header.Connection }
输出请求头【User-Agent】的值:${ headerValues['User-Agent'][0] }
cookie
获取 Cookie 的名称:${ cookie.JSESSIONID.name }
获取 Cookie 的值:${ cookie.JSESSIONID.value }
initParam
获取web.xml 中的配置:
username root url jdbc:mysql:///test
输出 Context-param username 的值:${ initParam.username }
输出 Context-param url 的值:${ initParam.url }



