JSP 表达式语言 EL (Expression language)
介绍
JSP EL 既可以创建创建算术表达式也可以创建逻辑表达式。在 JSP EL 表达内可以使用整型数,浮点数,字符串,常数 true,false,还有 null。在 JSP 页面可以代替 Java 代码。
示例
//${域对象.域对象中的对象.域对象中的对象的属性.域对象中的对象的属性的属性} 可以输出级联属性
${requestScope.user.uAddress.schoolAddress }<br>
EL 的优点
简化 JSP 页面,解决在传统 Java 代码在 JSP 页面的代码参杂问题。当 EL 表达式的值为 null 时,会在页面上显示空白,即什么都不显示。
EL 操作符
· 点操作符
使用方便但是不能访问特殊字符和数组,能访问一个 Bean 属性或者一个映射映射,还可以访问 map 类型的对象
${requestScope.user.uAddress.homeAddress }
Map<String, Object> map = new HashMap<>();
map.put("CN", "中国");
map.put("KR", "韩国");
map.put("FR", "法国");
map.put("CA", "加拿大");
map.put("JP", "日本");
${requestScope.map.CN }<br>
${requestScope.map.KR }<br>
${requestScope.map.FR }<br>
${requestScope.map.JP }<br>
${requestScope.map.CA }<br>
[] 中括号操作符
功能强大:可以包括特殊字符(· _ 、),能访问一个枚举或链表的元素,还可以获取变量值
${requestScope['user']['uPwd'] }<br>
${requestScope["user"]["uId"] }<br>
${requestScope.list[0] }<br>
${requestScope.list[1] }<br>
关系运算符
${3>2 }*******${3 gt 2 }<br>
${2>=2 }*******${2 ge 2 }<br>
${2<3 }*******${2 lt 3 }<br>
${2<=2 }*******${2 le 2 }<br>
${2==2 }*******${2 eq 2 }<br>
${3!=2 }*******${2 ne 1}<br>
逻辑运算符
${true&&false}*******${true and false}<br>
${!true}*******${not true}<br>
${true||false}*******${true or false}<br>
${empty list1}*******可以判断字符串、数据、集合的长度是否为0,为0返回true<br>
${empty list}*******非0返回false<br>
EL 内置对象
一共 11 个内置对象,无需创建即可以使用。这 11 个内置对象中有 10 个是 Map 类型的,最后一个是 pageContext 对象
内置对象
隐含对象 | 描述 |
---|---|
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 变量用来访问存储在各个作用域层次的变量。
全域查找:${属性名}表示依次在 pageScope、requesScopet、sessionScope、appliationScope 四个域中查找名字对应的属性。
pageScope:${pageScope.name}等同与pageContext.getAttribute(“name”);
requestScope:${requestScope.name}等同与request.getAttribute(“name”);
sessionScoep: ${sessionScope.name}等同与session.getAttribute(“name”);
applicationScope:${applicationScope.name}等同与application.getAttribute(“name”);
请求参数访问对象
param 和 paramValues 对象用来访问参数值,通过使用 request.getParameter 方法和 request.getParameterValues 方法。主要用来获取表单数据。
<form action="elindex.jsp">
用户名:<input type="text" name="uname">
兴趣:<br>
足球:<input type="checkbox" name="hobbies" value="football">
篮球:<input type="checkbox" name="hobbies" value="basetball">
乒乓球:<input type="checkbox" name="hobbies" value="tabletennis">
网球:<input type="checkbox" name="hobbies" value="tabletennis">
<input type="submit" value="提交">
</form>
${param.uname}<br>
${paramValues.hobbies[0]}<br>
${paramValues.hobbies[1]}<br>
请求头访问对象
header 和 headerValues 对象用来访问信息头,通过使用 request.getHeader 方法和 request.getHeaders 方法。
${header["user-agent"]}<br>
初始化参数访问对象
initParam 是 Map<String,String> 类型。它对应 web.xml 文件中的参数。
Cookie 访问对象
cookie 是 Map<String,Cookie> 类型,其中 key 是 Cookie 的名字,而值是 Cookie 对象本身。
pageContext 对象
pageContext 对象是 JSP 中 pageContext 对象的引用。通过 pageContext 对象,您可以访问 request 对象。
EL 表达式 | 说明 |
---|---|
${pageContext.request.queryString} | pageContext.getRequest().getQueryString(); |
${pageContext.request.requestURL} | pageContext.getRequest().getRequestURL(); |
${pageContext.request.contextPath} | pageContext.getRequest().getContextPath(); |
${pageContext.request.method} | pageContext.getRequest().getMethod(); |
${pageContext.request.protocol} | pageContext.getRequest().getProtocol(); |
${pageContext.request.remoteUser} | pageContext.getRequest().getRemoteUser(); |
${pageContext.request.remoteAddr} | pageContext.getRequest().getRemoteAddr(); |
${pageContext.session.id} | pageContext.getSession().getId(); |
${pageContext.servletContext.serverInfo} | pageContext.getServletContext().getServerInfo(); |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于