EL
EL在jsp页面中来存取数据
有“.”和“[]”两种,"[]"用来包含一些特殊的字符,如?或非字母的符号。
比如:pageContext.setAttribute("name-1", "value1");存
取:${pageScope["name-1"] }<br/> 在页面中显示 value1
${pageScope.name-1}<br/> 在页面中就是 -1
[] 也可以动态取值,“.”就无法做到 ${sessionScope.user[data]}中data 是一个变量
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
<%@ page isELIgnored="true"%> 表示是否禁用EL语句,
默认以page,request.session.application的顺序来寻找EL中所指定的属性。
设置数组作为属性:
<%
String names[]={"heluwei","wanweiru","wangyan"};
request.setAttribute("array",names);
%>
${array[0]}<br/>
${array[1]}<br/>
MAP:
<%
Map<String,String> map=new HashMap<String,String>();
map.put("name","wanweiru");
map.put("age","19");
request.setAttribute("login", map);
%>
${login.name}<br/>
${login.age}<br/>
EL隐式对象:
pageContext隐式对象:对应于PageContext类型,只要是getXxx()方法,用${pageContext.xxx}来取得。
属性范围相关隐式对象:与属性范围相关的EL隐式对象:pageScope.requestScope.sessionScope.applicationScope分别可以取得使用JSP隐式对象:pageContext.request.session和application的setAttribute()方法所设置的属性对象。
EL隐式对象:pageScope.requestScope.sessionScope和applicationScope不等同于JSP隐式对象:pageContext.request.session,application。EL隐式对象仅仅代表作用范围。
请求参数相关隐式对象:param和paramValues 举例来说:${param.user}其作用相当于<%=request.getParameter("user")%>
paramValues相对于 request.getParameterValues() 可以取得窗体复选框的值。${paramValues.favorites[0]}相当于<%=request.getParameterValues("favorites")[0]%>
标头相关隐式对象:取得用户请求的表头数据。header或headerValues
例如:${header["User-Agent"]} ----------><%=request.getHeader("User-Agent")%>
headerValues相当于request.getHeaders()方法;
cookie隐式对象:${cookie.username}
pageContext.findAttribute:先在page scope里找,如果找不到就到request scope里,再找不到就到session scope(if valid)里找,再找不到就到application scope(s)里找,再找不到就返回null。
pageContext.getAttribute:只在page scope里找,如果找不到就返回null。