005_EL表达式
一. EL表達式
1. EL表達式是為了簡化jsp代碼, 具體一點就是為了簡化在jsp里面寫的那些java代碼。
2. 寫法格式: ${表達式 }。
3. EL表達式從作用域中取值, 先從范圍小的作用域開始取, 如果沒有, 就往下一個作用域取。一直把四個作用域取完, 如果都沒有, 就顯示空字符, 不報錯。
二. EL表達式獲取值
1. 新建一個名稱叫做ELGetValue的Web工程
2. 新建一個index.jsp從4個作用域中獲取值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取Jsp的4個作用域的值</title></head><body><%pageContext.setAttribute("pageContext", "我是pageContext內置對象");request.setAttribute("request", "我是request內置對象");session.setAttribute("session", "我是session內置對象");application.setAttribute("application", "我是application內置對象");%><!-- EL表達式獲取pageContext作用域的值 -->${ pageScope.pageContext }<br/><!-- EL表達式獲取request作用域的值 -->${ requestScope.request }<br/><!-- EL表達式獲取session作用域的值 -->${ sessionScope.session }<br/><!-- EL表達式獲取application作用域的值 -->${ applicationScope.application }</body> </html>3. 部署運行
4. 新建一個el_array_value.jsp, 使用EL表達式從數組中獲取值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取獲取數組中的值</title></head><body><%String[] nameArray = {"zhangsan", "lisi", "wangwu"};pageContext.setAttribute("nameArray", nameArray);%><!-- EL表達式獲取獲取數組中的值 -->${ pageScope.nameArray[0] } ${ pageScope.nameArray[1] } ${ pageScope.nameArray[2] }</body> </html>5. 新建一個el_list_value.jsp, 使用EL表達式從集合中獲取值
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取獲取集合中的值</title></head><body><%List<String> addressList = new ArrayList<String>(); addressList.add("北京");addressList.add("洛陽");addressList.add("鄭州");request.setAttribute("addressList", addressList);%><!-- EL表達式獲取獲取集合中的值 -->${ requestScope.addressList[0] } ${ requestScope.addressList[1] } ${ requestScope.addressList[2] }</body> </html>6. EL表達式從Map中獲取值
6.1. 新建一個Student.java類
package com.lywgames.bean;import java.io.Serializable;public class Student implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }6.2. 新建一個el_map_value.jsp, 使用EL獲取Map值
<%@page import="com.lywgames.bean.Student"%> <%@page import="java.util.HashMap"%> <%@page import="java.util.Map"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取獲取Map中的值</title></head><body><%Map<String, Student> id2Student = new HashMap<String, Student>();Student xiaocui = new Student("小翠", 16);Student xiaomi = new Student("小明", 18);id2Student.put("s001", xiaocui);id2Student.put("s002", xiaomi);session.setAttribute("id2Student", id2Student);%><!-- EL表達式獲取獲取Map中的值 --><!-- EL表達式使用.xxx獲取值, xxx必須是字符串, 數值類型的字符串也不行 -->${ sessionScope.id2Student.s001.name } ${ sessionScope.id2Student.s001.age }<br/>${ sessionScope.id2Student.s002.name } ${ sessionScope.id2Student.s002.age }</body> </html>7. 新建一個el_cookie_value.jsp, 使用EL表達式從cookie中獲取值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取獲取cookie中的值</title></head><body><%response.addCookie(new Cookie("last_login_time", "2020-10-01"));%><!-- EL表達式獲取獲取cookie中的值 -->${ cookie.last_login_time.value }</body> </html>8. 新建el_scope_order.jsp, 使用EL表達式從作用域中獲取值的順序
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取Jsp的4個作用域的值順序</title></head><body><%pageContext.setAttribute("name", "zhangsan");request.setAttribute("name", "lisi");session.setAttribute("name", "wangwu");application.setAttribute("name", "zhaoliu");%><!-- 先從pageContext作用域里找name值; pageContext作用域里沒有, 再去request作用域里找name值;request作用域里沒有, 再去session作用域里找name值;session作用域里沒有, 再去application作用域里找name值; application作用域里沒有, 就為空字符串, 不會報錯。-->${name}<br/><!-- 只能取application作用域中的name值 -->${applicationScope.name }</body> </html>9. EL表達式從param中獲取值
9.1. 新建一個set_param_value_4_el.jsp設置參數
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>set parameter value for el</title></head><body><a href="el_param_value.jsp?address=beijing">beijing</a><form action="el_param_value.jsp" method="post"><input type="text" name="address" value="北京"/><input type="submit"/></form></body> </html>9.2. 新建一個el_param_value.jsp, 使用EL表達式從param中獲取值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>EL表達式獲取獲取parameter中的值</title></head><body><%request.setCharacterEncoding("utf-8"); %><%=request.getParameter("address").toString()%><br/><!-- el表達式不能轉碼 -->${param.address}</body> </html>三. EL表達式的11個內置對象
1. pageContext實例對應于當前頁面的處理。?
2. 作用域相關對象
2.1. pageScope: 與頁面作用域屬性的名稱和值關聯的Map類。
2.2. requestScope: 與請求作用域屬性的名稱和值關聯的Map類。
2.3. sessionScope: 與會話作用域屬性的名稱和值關聯的Map類。
2.4. applicationScope: 與應用程序作用域屬性的名稱和值關聯的Map類。
3. 頭信息相關對象
3.1. header: 按名稱存儲請求頭主要值的Map類。
3.2. headerValues: 將請求頭的所有值作為String數組存儲的Map類。
4. 參數信息相關對象
4.1. param: 按名稱存儲請求頭主要值的Map類。
4.2. paramValues: 將請求參數的所有值作為String數組存儲的Map類。
5. cookie: 按名稱存儲請求附帶的cookie的Map類。
6. initParam: 按名稱存儲Web應用程序上下文初始化參數的Map類。
總結
- 上一篇: 004_Jsp九大内置对象
- 下一篇: 006_JSTL