JSP中的EL 表达式
什么是 EL 表达式,EL 表达式的作用?
EL 表达式的全称是:Expression Language。是表达式语言。
EL 表达式的什么作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。
因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。- <body>
- <%
- request.setAttribute("key","值");
- %>
- 表达式脚本输出 key 的值是:
- <%=request.getAttribute("key")==null?"":request.getAttribute("key")%><br/>
- EL 表达式输出 key 的值是:${key}
- </body>
复制代码
EL 表达式的格式是:${表达式}
EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。
EL 表达式搜索域数据的顺序
EL 表达式主要是在 jsp 页面中输出数据。
主要是输出域对象中的数据。
当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。- <body>
- <%
- // 往四个域中都保存了相同的 key 的数据。
- request.setAttribute("key", "request");
- session.setAttribute("key", "session");
- application.setAttribute("key", "application");
- pageContext.setAttribute("key", "pageContext");
- %>
- ${ key }
- </body>
复制代码
注释掉pageContext:

<strong>四个域的大小:pageContext Session 域
applicationScope --->ServletContext 域- public class Person {
- // Person 类中普通属性,数组属性。 list 集合属性和 map 集合属性。
- private String name;
- private String[] phones;
- private List<String> cities;
- private Map<String,Object> map;
- public Person() {
- }
- public int getAge() {
- return 21;
- }
- public void setName(String name) {
- this.name = name;
- }
- public void setPhones(String[] phones) {
- this.phones = phones;
- }
- public void setCities(List<String> cities) {
- this.cities = cities;
- }
- public String getName() {
- return name;
- }
- public String[] getPhones() {
- return phones;
- }
- public List<String> getCities() {
- return cities;
- }
- public Map<String, Object> getMap() {
- return map;
- }
- public void setMap(Map<String, Object> map) {
- this.map = map;
- }
- public Person(String name, String[] phones, List<String> cities, Map<String, Object> map) {
- this.name = name;
- this.phones = phones;
- this.cities = cities;
- this.map = map;
- }
- }
复制代码 结果:

pageContext 对象的使用
- 协议:
- 服务器 ip:
- 服务器端口:
- 获取工程路径:
- 获取请求方法:
- 获取客户端 ip 地址:
- 获取会话的 id 编号:
- <%
- Person person = new Person();
- person.setName("愷龍");
- person.setPhones(new String[]{"18755556666","18688886666","18699998888"});
- List<String> cities = new ArrayList<String>();
- cities.add(" 大连");
- cities.add(" 沈阳");
- cities.add(" 北京");
- person.setCities(cities);
- Map<String,Object> map = new HashMap<>();
- map.put("key1","value1");
- map.put("key2","value2");
- map.put("key3","value3");
- person.setMap(map);
- pageContext.setAttribute("p", person);
- %>
- 输出 Person:${ p }<br/>
- 输出 Person 的 name 属性:${p.name} <br>
- 输出 Person 的 phones 数组属性值:${p.phones[2]} <br>
- 输出 Person 的 cities 集合中的元素值:${p.cities} <br>
- 输出 Person 的 List 集合中个别元素值:${p.cities[2]} <br>
- 输出 Person 的 Map 集合: ${p.map} <br>
- 输出 Person 的 Map 集合中某个 key 的值: ${p.map.key3} <br>
- 输出 Person 的 age 属性:${p.age} <br>
复制代码 结果:

EL 表达式其他隐含对象的使用
变量类型作用paramMap它可以获取请求参数的值paramValuesMap它也可以获取请求参数的值,获取多个值的时候使用假设浏览器中请求地址为:
http://localhost:8080/JSPDemo/PersonOutput.jsp?username=愷龍&password=123456&teacher=耿祥义&teacher=柳淑琴- <body>
- <%
- // 1 、值为 null 值的时候,为空
- request.setAttribute("emptyNull", null);
- // 2 、值为空串的时候,为空
- request.setAttribute("emptyStr", "");
- // 3 、值是 Object 类型数组,长度为零的时候
- request.setAttribute("emptyArr", new Object[]{});
- // 4 、 list 集合,元素个数为零
- List<String> list = new ArrayList<>();
- request.setAttribute("emptyList", list);
- //list 集合,元素个数为零
- List<String> list1 = new ArrayList<>();
- list1.add("abc");
- request.setAttribute("emptyList1",list1);
- // 5 、 map 集合,元素个数为零
- Map<String,Object> map = new HashMap<String, Object>();
- request.setAttribute("emptyMap", map);
- map 集合,元素个数为1
- Map<String,Object> map1 = new HashMap<String, Object>();
- map1.put("key1", "value1");
- request.setAttribute("emptyMap1", map1);
- %>
- ${ empty emptyNull } <br/>
- ${ empty emptyStr } <br/>
- ${ empty emptyArr } <br/>
- ${ empty emptyList } <br/>
- ${ empty emptyList1 } <br/>
- ${ empty emptyMap } <br/>
- ${ empty emptyMap1 } <br/>
- </body>
复制代码 结果:

变量类型作用headerMap它可以获取请求头的信息headerValuesMap它可以获取请求头的信息,它可以获取多个值的情况- <body>
- <%
- Map<String,Object> map = new HashMap<String, Object>();
- map.put("a.a.a", "aaaValue");
- map.put("b+b+b", "bbbValue");
- map.put("c-c-c", "cccValue");
- map.put("d", "dValue");
- map.put("e", "eValue");
- map.put("f", "fValue");
- request.setAttribute("map", map);
- %>
- ${ map['a.a.a'] } <br>
- ${ map["b+b+b"] } <br>
- ${ map['c-c-c'] } <br>
- ${ map.d } <br>
- ${ map.e} <br>
- ${ map.f} <br>
- </body>
复制代码
变量类型作用cookieMap它可以获取当前请求的 Cookie 信息- <body>
- <%
- request.setAttribute("aaa","aaaValue");
- session.setAttribute("bbb","bbbValue");
- %>
- ${requestScope["aaa"] }<br>
- ${sessionScope["bbb"]}<br>
- </body>
复制代码
变量类型作用initParamMap它可以获取在 web.xml 中配置的上下文参数web.xml 中的配置:- <body>
- <%
- pageContext.setAttribute("key1", "pageContext1");
- pageContext.setAttribute("key2", "pageContext2");
- request.setAttribute("key2", "request");
- session.setAttribute("key2", "session");
- application.setAttribute("key2", "application");
- %>
- ${ applicationScope.key2 }
- ${ sessionScope.key2 }
- ${ requestScope.key2 }
- </body>
复制代码 jsp代码:- <body>
- <%--
- request.getScheme() 它可以获取请求的协议
- request.getServerName() 获取请求的服务器 ip 或域名
- request.getServerPort() 获取请求的服务器端口号
- getContextPath() 获取当前工程路径
- request.getMethod() 获取请求的方式( GET 或 POST )
- request.getRemoteHost() 获取客户端的 ip 地址
- session.getId() 获取会话的唯一标识
- --%>
- <%
- pageContext.setAttribute("req", request);
- %>
- <%=request.getScheme() %> <br>
- 1.协议: ${ req.scheme }<br>
- 2.服务器 ip:${ pageContext.request.serverName }<br>
- 3.服务器端口:${ pageContext.request.serverPort }<br>
- 4.获取工程路径:${ pageContext.request.contextPath }<br>
- 5.获取请求方法:${ pageContext.request.method }<br>
- 6.获取客户端 ip 地址:${ pageContext.request.remoteHost }<br>
- 7.获取会话的 id 编号:${ pageContext.session.id }<br>
- </body>
复制代码
欢迎关注公众号:愚生浅末
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |