JSP中的EL 表达式

打印 上一主题 下一主题

主题 832|帖子 832|积分 2496

JSP中的EL 表达式

什么是 EL 表达式,EL 表达式的作用?

EL 表达式的全称是:Expression Language。是表达式语言。
EL 表达式的什么作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。
因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。
  1. <body>
  2.     <%
  3.         request.setAttribute("key","值");
  4.     %>
  5.     表达式脚本输出 key 的值是:
  6.     <%=request.getAttribute("key")==null?"":request.getAttribute("key")%><br/>
  7.     EL 表达式输出 key 的值是:${key}
  8. </body>
复制代码

EL 表达式的格式是:${表达式}
EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。
EL 表达式搜索域数据的顺序

EL 表达式主要是在 jsp 页面中输出数据。
主要是输出域对象中的数据。
当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
  1. <body>
  2.     <%
  3.         // 往四个域中都保存了相同的 key 的数据。
  4.         request.setAttribute("key", "request");
  5.         session.setAttribute("key", "session");
  6.         application.setAttribute("key", "application");
  7.         pageContext.setAttribute("key", "pageContext");
  8.     %>
  9.     ${ key }
  10. </body>
复制代码

注释掉pageContext:

<strong>四个域的大小:pageContext Session 域
applicationScope --->ServletContext 域
  1. public class Person {
  2.     // Person 类中普通属性,数组属性。 list 集合属性和 map 集合属性。
  3.     private String name;
  4.     private String[] phones;
  5.     private List<String> cities;
  6.     private Map<String,Object> map;
  7.     public Person() {
  8.     }
  9.     public int getAge() {
  10.         return 21;
  11.     }
  12.     public void setName(String name) {
  13.         this.name = name;
  14.     }
  15.     public void setPhones(String[] phones) {
  16.         this.phones = phones;
  17.     }
  18.     public void setCities(List<String> cities) {
  19.         this.cities = cities;
  20.     }
  21.     public String getName() {
  22.         return name;
  23.     }
  24.     public String[] getPhones() {
  25.         return phones;
  26.     }
  27.     public List<String> getCities() {
  28.         return cities;
  29.     }
  30.     public Map<String, Object> getMap() {
  31.         return map;
  32.     }
  33.     public void setMap(Map<String, Object> map) {
  34.         this.map = map;
  35.     }
  36.     public Person(String name, String[] phones, List<String> cities, Map<String, Object> map) {
  37.         this.name = name;
  38.         this.phones = phones;
  39.         this.cities = cities;
  40.         this.map = map;
  41.     }
  42. }
复制代码
结果:

pageContext 对象的使用


  • 协议:
  • 服务器 ip:
  • 服务器端口:
  • 获取工程路径:
  • 获取请求方法:
  • 获取客户端 ip 地址:
  • 获取会话的 id 编号:
  1.     <%
  2.         Person person = new Person();
  3.         person.setName("愷龍");
  4.         person.setPhones(new String[]{"18755556666","18688886666","18699998888"});
  5.         List<String> cities = new ArrayList<String>();
  6.         cities.add(" 大连");
  7.         cities.add(" 沈阳");
  8.         cities.add(" 北京");
  9.         person.setCities(cities);
  10.         Map<String,Object> map = new HashMap<>();
  11.         map.put("key1","value1");
  12.         map.put("key2","value2");
  13.         map.put("key3","value3");
  14.         person.setMap(map);
  15.         pageContext.setAttribute("p", person);
  16.     %>
  17.     输出 Person:${ p }<br/>
  18.     输出 Person 的 name 属性:${p.name} <br>
  19.     输出 Person 的 phones 数组属性值:${p.phones[2]} <br>
  20.     输出 Person 的 cities 集合中的元素值:${p.cities} <br>
  21.     输出 Person 的 List 集合中个别元素值:${p.cities[2]} <br>
  22.     输出 Person 的 Map 集合: ${p.map} <br>
  23.     输出 Person 的 Map 集合中某个 key 的值: ${p.map.key3} <br>
  24.     输出 Person 的 age 属性:${p.age} <br>
复制代码
结果:

EL 表达式其他隐含对象的使用

变量类型作用paramMap它可以获取请求参数的值paramValuesMap它也可以获取请求参数的值,获取多个值的时候使用假设浏览器中请求地址为:
http://localhost:8080/JSPDemo/PersonOutput.jsp?username=愷龍&password=123456&teacher=耿祥义&teacher=柳淑琴
  1. <body>
  2. <%
  3.     // 1 、值为 null 值的时候,为空
  4.     request.setAttribute("emptyNull", null);
  5.     // 2 、值为空串的时候,为空
  6.     request.setAttribute("emptyStr", "");
  7.     // 3 、值是 Object 类型数组,长度为零的时候
  8.     request.setAttribute("emptyArr", new Object[]{});
  9.     // 4 、 list 集合,元素个数为零
  10.     List<String> list = new ArrayList<>();
  11.     request.setAttribute("emptyList", list);
  12.     //list 集合,元素个数为零
  13.     List<String> list1 = new ArrayList<>();
  14.     list1.add("abc");
  15.     request.setAttribute("emptyList1",list1);
  16.     // 5 、 map 集合,元素个数为零
  17.     Map<String,Object> map = new HashMap<String, Object>();
  18.     request.setAttribute("emptyMap", map);
  19.      map 集合,元素个数为1
  20.     Map<String,Object> map1 = new HashMap<String, Object>();
  21.     map1.put("key1", "value1");
  22.     request.setAttribute("emptyMap1", map1);
  23. %>
  24. ${ empty emptyNull } <br/>
  25. ${ empty emptyStr } <br/>
  26. ${ empty emptyArr } <br/>
  27. ${ empty emptyList } <br/>
  28. ${ empty emptyList1 } <br/>
  29. ${ empty emptyMap } <br/>
  30. ${ empty emptyMap1 } <br/>
  31. </body>
复制代码
结果:

变量类型作用headerMap它可以获取请求头的信息headerValuesMap它可以获取请求头的信息,它可以获取多个值的情况
  1. <body>
  2.     <%
  3.         Map<String,Object> map = new HashMap<String, Object>();
  4.         map.put("a.a.a", "aaaValue");
  5.         map.put("b+b+b", "bbbValue");
  6.         map.put("c-c-c", "cccValue");
  7.         map.put("d", "dValue");
  8.         map.put("e", "eValue");
  9.         map.put("f", "fValue");
  10.         request.setAttribute("map", map);
  11.     %>
  12.     ${ map['a.a.a'] } <br>
  13.     ${ map["b+b+b"] } <br>
  14.     ${ map['c-c-c'] } <br>
  15.     ${ map.d } <br>
  16.     ${ map.e} <br>
  17.     ${ map.f} <br>
  18. </body>
复制代码

变量类型作用cookieMap它可以获取当前请求的 Cookie 信息
  1. <body>
  2.     <%
  3.         request.setAttribute("aaa","aaaValue");
  4.         session.setAttribute("bbb","bbbValue");
  5.     %>
  6.     ${requestScope["aaa"] }<br>
  7.     ${sessionScope["bbb"]}<br>
  8. </body>
复制代码

变量类型作用initParamMap它可以获取在 web.xml 中配置的上下文参数web.xml 中的配置:
  1. <body>
  2.     <%
  3.         pageContext.setAttribute("key1", "pageContext1");
  4.         pageContext.setAttribute("key2", "pageContext2");
  5.         request.setAttribute("key2", "request");
  6.         session.setAttribute("key2", "session");
  7.         application.setAttribute("key2", "application");
  8.     %>
  9.     ${ applicationScope.key2 }
  10.     ${ sessionScope.key2 }
  11.     ${ requestScope.key2 }
  12. </body>
复制代码
jsp代码:
  1. <body>
  2.     <%--
  3.     request.getScheme() 它可以获取请求的协议
  4.     request.getServerName() 获取请求的服务器 ip 或域名
  5.     request.getServerPort() 获取请求的服务器端口号
  6.     getContextPath() 获取当前工程路径
  7.     request.getMethod() 获取请求的方式( GET 或 POST )
  8.     request.getRemoteHost() 获取客户端的 ip 地址
  9.     session.getId() 获取会话的唯一标识
  10.     --%>
  11.     <%
  12.         pageContext.setAttribute("req", request);
  13.     %>
  14.     <%=request.getScheme() %> <br>
  15.     1.协议: ${ req.scheme }<br>
  16.     2.服务器 ip:${ pageContext.request.serverName }<br>
  17.     3.服务器端口:${ pageContext.request.serverPort }<br>
  18.     4.获取工程路径:${ pageContext.request.contextPath }<br>
  19.     5.获取请求方法:${ pageContext.request.method }<br>
  20.     6.获取客户端 ip 地址:${ pageContext.request.remoteHost }<br>
  21.     7.获取会话的 id 编号:${ pageContext.session.id }<br>
  22. </body>
复制代码

欢迎关注公众号:愚生浅末

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表